>> 관련 Apache Bug

-. 내용 : AcceptEx 는 MS 측에서 속도 향상을 위해 accept 의 확장 형태로 만들어 놓은 Network API 인데,

이것이 MS 의 멀티 프로세스 모듈과 충돌하여 나타난 Apache Bug

-. 증상 : 에러 로그 파일에 다음과 같은 에러가 지속적으로 쌓이는 것을 볼 수 있음.

An operation was attempted on something that is not a socket.: winnt_accept: AcceptEx failed. Attempting to recover.

또는

지정된 네트워크 이름을 더 이상 사용할 수 없습니다. : winnt_accept: Asynchronous AcceptEx failed.

또는

세마포 제한 시간이 만료되었습니다. : winnt_accept: Asynchronous AcceptEx failed.

 

-. 해결 방법 : AcceptEx를 쓰지 않고 전통적인 Accept를 쓰도록 Config를 수정

httpd.conf 에 다음과 같이 추가

<IFModule mpm_winnt_module>
Win32DisableAcceptEx
</IFModule>

 


※ Apache HTTP Server 버전에 따라 httpd.conf 를 다음과 같이 설정하기도 한다고 함.

Case 1) 2.4 미만인 경우
EnableMMAP off
EnableSendfile off
Win32DisableAcceptEx

Case 2) 2.4 이상인 경우
EnableMMAP off
EnableSendfile off
AcceptFilter http none
AcceptFilter https none