동적 페이지를 제공 할 때 Windows의 Apache 2.4가 느리게 응답하고 정지됨


30

(이 질문에 대한 답변을 알고 있습니다. 커뮤니티에 답변을 공유하기 위해 게시하면됩니다)

Apache 2.4의 로컬 (Windows 7) 인스턴스는 이러한 URL에 액세스하는 데 사용하는 브라우저에 따라 일부 URL을 제공 할 때 지연 또는 중단을 경험 합니다 .

Firefox / Chrome을 사용하면 Apache가 특정 URL에서 느리게 응답 합니다. 주어진 URL에서 약 20 %의 느리게 발생합니다. 이 문제가 발생하면 Firefox가 "Waiting for ..."상태를 표시하는 5 초 지연이 발생합니다.

Internet Explorer 9에서는 Apache 가 다시 시작될 때까지 중단되어 모든 브라우저에서 모든 요청을 처리하는 것이 중지 됩니다.

  • 이는 동적 (PHP) 요청에서만 발생하는 것으로 보이지만 전부는 아닙니다. 실제로는 하나의 특정 사이트에서만 발생합니다. 동일한 컴퓨터의 다른 PHP 기반 사이트는 정상적으로 작동합니다.
  • 문제가있는 사이트가 많은 수의 하위 도메인 (VirtualHosts)으로 구성되어있는 것이 중요하거나 중요하지 않을 수 있습니다.
  • Windows 방화벽 및 Comodo Firewall을 비활성화해도 도움이되지 않습니다.
  • 이 문제는 "더 번잡 한"페이지 (IFRAMES에 대한 추가 요청 등)에서 더 자주 보입니다.

httpd.confKeepAlive, EnableMMAP, HostnameLookups 비활성화와 같은 많은 변경을 시도 했지만 아무것도 작동하지 않는 것 같습니다.


1
투표권이 있으면 답변을 실제 답변으로 옮기는 평판이 나옵니다. (아무것도 없다면, upvotes는 당신에게 더 많은 명성을 얻게 될 것입니다.)
pjmorse

1
Google을 통해이 게시물을 찾으 려면 다음 과 같은 오류가 발생합니다. " (OS 64) 지정된 네트워크 이름을 더 이상 사용할 수 없습니다. : AH00341 : winnt_accept : 비동기 AcceptEx 실패. ". 독일어 : " (OS 64) Der angegebene Netzwerkname ist nicht mehr verfügbar. : AH00341 : winnt_accept : 비동기 AcceptEx 실패. ".
Uwe Keim

답변:


35

의해 답변을 Thomasz


해결책은 다음을 추가하는 것입니다 httpd.conf.

AcceptFilter http none
AcceptFilter https none

Windows에서는 성능이 약간 향상되지만 Comodo Firewall과 충돌하는 AcceptEx () API (WinSock의 일부)를 비활성화하는 효과가 있습니다.

요청이 여전히 Comodo의 네트워킹 코드를 통과하기 때문에 Comodo Firewall을 "Disabled"모드로 설정해도 도움이되지 않습니다. 문제를 제거하려면 Comodo를 완전히 제거해야한다고 생각합니다 (시도하지는 않았지만).

Apache 2.2에서 비슷한 문제가 발생하면 대신 Win32DisableAcceptEx 지시문을 사용해야합니다.

참고 문헌

http://httpd.apache.org/docs/2.4/mod/core.html 에서 인용 :

Windows의 기본값은 다음과 같습니다.

AcceptFilter http data

AcceptFilter https data

Window의 mpm_winnt는 AcceptEx () API를 토글하기 위해 AcceptFilter를 해석하고 http 프로토콜 버퍼링을 지원하지 않습니다. Windows AcceptEx () API를 사용하는 두 개의 값이 있으며 연결간에 네트워크 소켓을 재활용합니다. 데이터는 위에서 설명한대로 데이터가 전송 될 때까지 대기하며 초기 데이터 버퍼 및 네트워크 엔드 포인트 주소는 모두 단일 AcceptEx () 호출에서 검색됩니다. connect는 AcceptEx () API를 사용하고 네트워크 엔드 포인트 주소도 검색하지만 connect 옵션은 초기 데이터 전송을 기다리지 않습니다.

Windows에서는 AcceptEx () 대신 accept ()를 사용하지 않으며 연결간에 소켓을 재활용하지 않습니다. 이 기능은 드라이버 지원이 깨진 네트워크 어댑터와 VPN 드라이버, 스팸, 바이러스 또는 스파이웨어 필터와 같은 일부 가상 네트워크 공급자에 유용합니다.

참조 : http://forums.comodo.com/help-for-comodo-antivirus/conflict-with-apache-t260.0.html;msg31636#msg31636


1
서비스가 다시 시작될 때까지 Apache2.4 (comodo 관련 없음)가 중단되는 IE10에 문제가 있습니다.이를 수정하도록 .conf를 변경하십시오. 이것을 게시 해 주셔서 감사합니다.
matt lohkamp

1
이것은 나를 위해 일했다. 이 주제에 대한 정보가 현재 매우 흩어져 있기 때문에 블로그 에서 더 많은 참고 자료를 수집했습니다 .
Stijn de Witt

3
나를 위해 일했습니다. 승리 7 x64. 왜 noneApache의 기본 설정이 아닌지 궁금합니다 . 대부분의 다른 '혁신'기능은 아파치에서 기본적으로 사용됩니다 P
rustyx

-1

Windows 7 Pro 상자에서 Apache 2.4.16을 실행 중이며 약 2 주 전에 웹 사이트 작동이 중단되었습니다. 이것을 추가하면 문제가 해결되었습니다.

ServerRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.4"

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen XX.XX.XX.XX:80
Listen 80
AcceptFilter http none
AcceptFilter https none

귀하의 답변이 @Eric Fossum의 답변과 정확히 동일하므로 투표하지 않았습니다.
hargobind
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.