localhost에 대한 응답이 왜 그렇게 느립니까?


59

나는 친구를 위해 작은 PHP 프로젝트를 진행 중이며 로컬 개발을위한 WAMP 환경 설정이 있습니다. 로컬 Apache 2.2의 응답이 즉각적이었던 시절을 기억합니다. 아아, 이제 나는 길고 긴 휴가에서 돌아 왔으므로 나는 localhost천천히 느리게 반응 합니다.

300B HTML 페이지가 게재 되려면 약 5 초가 걸립니다.

작업 관리자를 보면 httpd프로세스 (2)가 CPU의 0 %를 사용하고 있으며 전체 컴퓨터가로드되지 않습니다 (0-2 % CPU 사용량).

대기 시간이 왜 이렇게 높습니까? 스레드를 우선 순위가 높은 것으로 실행하도록 조정할 수있는 Apache 설정이 있습니까? 응답을 제공하기 전에 단순히 잠을 자고있는 것 같습니다.


1
되어 localhost해결이 제대로 DNS 현명한? ping localhost다시 와야 순간적 으로 127.0.0.1.
Alexis Lê-Quôc

잘 작동, <1ms에서받은 응답
Peter Perháč

파이어 폭스가 문제가 될 수 있다고 생각했지만 IE에서도 5 초가 걸리므로 일부 시스템 설정 또는 Apache 설정 또는 gremlins 중 하나 여야합니다.
Peter Perháč

2
정적 컨텐츠를 요청할 때 (즉,로드 할 때 http://localhost/index.html) 동일한 동작이 있습니까? 그렇지 않으면 Apache 문제가 아닌 PHP 문제 일 수 있습니다.
Marcus Spiegel

5
이 질문에 대한 다양하고 다양한 답변은 페이지 요청이 느릴 수있는 수백 가지의 다른 이유가 있지만 수십 가지가 있다는 것입니다. 페이지 요청이 너무 느려서이 질문에 도달 한 경우 여기에서 유용한 답변을 얻기 전에 속도 저하 원인에 대해 더 깊이 파고 들어야합니다. strace이를 tcpdump위한 유용한 도구입니다.
Ladadadada

답변:


59

나를 위해 ServerName속성을 설정하면 httpd.conf지연 이 고정되었습니다 (최악의 경우 최대 10 초였습니다).

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
ServerName 127.0.0.1:80

12
이것은 효과가있다-내가 두 번
투표

8
이것은 나를 위해 그것을 수정합니다! 10 초의 대기 시간에서 2ms로 사라졌습니다!
DouglasHeriot

나는 몇 시간 동안 고생했고 이것이 해결책이었습니다.
williamcarswell

1
localhost가 올바르게 해결되면 왜 이것이 문제입니까? 응답하기 전에 10 초 동안 무슨 일이 일어나고 있습니까? 어딘가에 타임 아웃을 기다리고?
milan

3
@Elipticalview 파일의 주석에서 알 수 있듯이; If your host doesn't have a registered DNS name, enter its IP address here.
sshow

21

나는 똑같은 문제가 있었다.

hosts 파일에서 localhost redirect를 127.0.0.1로 설정해도 도움이되지 않았습니다. MySQL 서버 최적화는 도움이되지 않았습니다 (InnoDB-> MyISAM, my.ini에서 많은 캐시 관련 지시문 변경).

그런 다음 web webgrind를 사용하여 문제를 "새로운 PDO (...)"호출로 좁혔습니다. 작고 보기 흉한 사람

mysql:host=localhost;dbname=dp-ui;charset=utf8 

mysql:host=127.0.0.1;dbname=dp-ui;charset=utf8

dsn에서 PDO에 대한 문제를 완전히 해결했습니다 ! 페이지 로딩 시간 이 3000ms에서 16ms로 늘어났습니다 .

그러나 hosts 파일의 "127.0.0.1 localhost"행이 도움이되지 않은 이유가 실제로 혼란 스럽습니다.


3
누군가 파일을 편집하기 위해 편집해야하는 파일을 말해 줄 수 있습니까?
Giri

1
PHP 스크립트에서 데이터베이스에 연결하는 줄을 편집해야합니다. 예는 줄을 변경 : $link = new PDO('mysql:host=localhost;dbname=dp-ui;charset=utf8');$link = new PDO('mysql:host=127.0.0.1;dbname=dp-ui;charset=utf8');
michalko

최근에 EXT-JS 응용 프로그램을 작업 중이며 응답하는 데 너무 오래 걸리는 MYSQL 데이터 쿼리의 큰 문제가 있습니다. MYSQL은 기본적으로 너무 느 렸습니다. 감사합니다, 여기에 답이 있습니다 ..... 연결 스크립트에서 다음과 같이 호스트를 변경했습니다. host = localhost; to host = 127.0.0.1 서버 응답이 3 분 (180 초)에서 1 초 미만으로 변경되었습니다. 고마워요
user184985

이것은 내 문제를 해결했습니다. 이상한 ... 나는 SQLite에서 그 문제를 눈치 채지 못했다
Mladen Janjetovic

2
저도 마찬가지지만 워드 프레스에서도 마찬가지입니다. wp-config.php에서 "localhost"를 "127.0.0.1"로 대체했습니다
Adrian

20

문제는 Apache의 기본 설정 파일에서 발생했습니다 httpd.conf.

나는 이것을 찾았다:

Windows에서 Apache 2.x와 작동하도록 PHP를 설정하는 방법에는 세 가지가 있습니다. 처리기, CGI 또는 FastCGI에서 PHP를 실행할 수 있습니다. [출처]

그래서 나는 아파치의 설정으로 가서 문제가 어디에 있는지 보았습니다. 모듈로로드하는 대신 CGI로 설정했습니다. 이것은 php-cgi.exe내가 요청할 때마다 시작되고 종료되었습니다. 이로 인해 localhost개발 속도가 느려졌 습니다.

PHP를 Apache MODULE 로로드하도록 설정을 변경했으며 이제는 완벽하게 작동합니다. :)

Apache 2.x 용 PHP 모듈을로드하려면 :

1) 다음 라인을 삽입하십시오 httpd.conf

LoadModule php5_module "c:/php/php5apache2.dll"

AddHandler application/x-httpd-php .php

(ps는 C:/php경로로 변경 됩니다. 또한 php5apache **. dll을 기존 파일 이름으로 변경하십시오.)

2) .php 파일에 대해서만 PHP 실행을 제한하려면 다음을 추가하십시오 httpd.conf.

<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>

3) php.ini의 경로를 설정하십시오 httpd.conf(다시 시작한 후에 오류가 발생하면이 줄을 다시 제거하십시오)

PHPIniDir "C:/php"

노력해 주셔서 감사합니다.


2
My Apache는 소스에서 언급 한대로 행 추가를 중지합니다. Windows에서 어떻게합니까?
AgA

해당 링크가 만료되었습니다. 이것을 사용하십시오 : goo.gl/2EVth9
T.Todua

7

나는 같은 문제가 있었고 마침내 두 가지 사실에서 나온 것을 발견했습니다.

  1. Mac OS X Mavericks를 사용합니다
  2. http://myproject.local/127.0.0.1 myproject.local을 입력 했기 때문에 URL을 통해 프로젝트에 액세스 했습니다./etc/hosts

.localtld가 Bonjour 서비스 용으로 예약되어 있고 Mac OS X Lion (10.7) 이후로 문제가 발생했습니다 .

다른 것을 위해 tld를 변경하면 문제가 해결되었습니다.


6

/etc/hosts올바른지 확인 하십시오. 이처럼 :

# hostname mobrglnx1 added to /etc/hosts by anaconda

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 *****

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 *******

그 장소에서 ****당신의 호스트 이름을 제공하십시오.


그것은 나를위한 경우였다. 내 도메인은 ipv4 라인에 설정되었지만 ipv6에는 설정되지 않았습니다.
Rafael Beckel

저도 마찬가지입니다. / etc / hosts에 추가 줄을 넣기 전에 요청이 5 초 이상 걸렸습니다. 이제 내 물건은 ~ 0.1 초 안에 실행됩니다.
mwallisch

나를 올바른 방향으로 놓으십시오. 추가 127.0.0.1 something.atmy.localhost되어 이제 요청에 더 이상 20 초가 걸리지 않습니다. 대신 현지 아파치가 즉시 응답합니다. 네트워크에 대해 많이 몰라 무언가 제대로 구성되지 않았기 때문에 도메인 이름이 너무 느리게 해결되는 것 같습니다.
robsch

4

당신에하는 httpd.conf설정을 설정해야합니다 HostnameLookups Off.


6
apache.conf 파일이없는 것 같습니다. 또한 모든 파일에서 HostnameLookups 지시문을 검색하여 core.html.en 수동 파일에서 찾았습니다. 그것은 기본적으로 꺼짐, 그래서 나는 그것이 꺼져 생각했다
피터 Perháč

3

누군가에게 도움이되는 경우이 문제가 발생하여 잘못된 DNS 조회 로 정리되었습니다 .

서버의 DNS 서버가 127.0.0.1-공용 DNS 서버를 사용하도록 변경되어 전체 힙이 더 빨라졌습니다.


2

이 질문에는 apache-2.2 태그가 있지만 Apache 2.4 + PHP 5.5와 함께 WAMP 에서이 사악한 문제의 영향을받는 사람은 다음과 같은 대답이 나를 위해 속였습니다.

이 줄 httpd.conf주석을 달아 CGI 모듈의 로딩을 편집 하고 비활성화하십시오 :LoadModule cgi_module modules/mod_cgi.so

https://stackoverflow.com/a/18786773/260080

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.