설명 :Windows NT에 최적화된 다중 처리 모듈
상태 :MPM
모듈명 :mpm_winnt_module
소스 파일 :mpm_winnt.c

개요

이 다중 처리 모듈 (MPM)은 Windows NT의 기본입니다. 하나의 제어 과정을 통해 이것이 하나의 자식 프로세스를 시작하고 자식 프로세스가 요청을 처리하는 데 스레드를 시작합니다.

Win32DisableAcceptEx 지시어

설명 :네트워크 연결의 접수에 accept ()를 AcceptEx 대신 사용
구문 :Win32DisableAcceptEx
기본값 :AcceptEx ()는 기본적으로 활성화되어 있습니다. AcceptEx ()를 비활성화하려면이 지시어를 사용합니다.
장소 :서버 설정 파일
상태 :MPM
모듈mpm_winnt
호환성 :2.0.49 버전 이후에 사용 가능

AcceptEx ()는 Microsoft WinSock v2 API에서 경우에 따라서는 BSD 형식의 accept () API보다 좋은 성능을 발휘합니다. 자주 사용되는 Windows 제품 중 특히 바이러스 스캐너와 VPN 패키지에 버그가 원인 AcceptEx () 의 적절한 동작을 방해하는 것이 있습니다. 다음과 같은 오류가 발생하면이 지시어를 사용하여 AcceptEx () 를 사용하지 않도록하십시오.

[error] (730038) An operation was attempted on something that is not a socket : winnt_accept : AcceptEx failed. Attempting to recover.

============================================================================================

mypda.net 은 XP 서버에 XAMPP 1.6.4 (Apache + php + mysql) 환경에서 구동되고 있습니다.

트래픽이 그다지 없고, 대역폭이 여유로운 상황에서 서버 사양이 P4 3.0 Ghz 에 Ram 1G 환경이라
웹서버가 느려질 이유가 전혀 없음에도 불구하고, 상당히 느린 반응 속도가 고질 적인 문제 였습니다.

현재 한참 개발 중인 Zeroboard XE 문제도 아니었던 것이 Zeroboard 4 나 Wordpress 를 사용할 때에도
상당히 느린 반응 속도를 가지고 있었습니다.

생각 날때마다 mysql 이나 httpd.conf 설정을 살펴 보긴 했지만 해결이 되지 않았었는대, 문제 해결을 위한
가장 기본적인 접근 방법을 잊고 있었더군요. (서버를 만지는걸 어느 순간 신경 안쓰게 된 탓이겠지요)

Apache 의 error 로그를 뒤져 보았습니다.

[Fri Sep 08 04:02:33 2006] [warn] (OS 121)세마포어 시간 초과 기간이 만료되었습니다. : winnt_accept: Asynchronous AcceptEx failed.
[Fri Sep 08 04:02:33 2006] [warn] (OS 64)지정된 네트워크 이름을 더 이상 사용할 수 없습니다. : winnt_accept: Asynchronous AcceptEx failed.


 위와 같은 에러가 정말 많더군요. 이상 적인 CPU 점유율과 느린 반응의 원인이 MS 환경 (Win32- xp,2000 서버) 의 멀티 프로세스 모듈과 어우러진 아파치의 버그 더군요.

해결 방법은 httpd.conf 에 다음과 같은 라인을 추가 하는 것 입니다.

Win32DisableAcceptEx


"Win32DisableAcceptEx"  이 라인 핵심 라인 입니다. 

추가 시켜 주시고 아파치를 재구동 하면 됩니다.

http://www.mydigitallife.info/2006/03/09/winnt_accept-asynchronous-acceptex-failed-error-in-apache-log/  (영문)

이곳에서 확인하시면 서버 안정성에 문제를 발생 시킬 수도 있다고는 하는대, 서비스가 엄청나게
느려지는 것 보다는 나아서 httpd.conf 를 바꾸고 반응 속도를 보았더니 속이 다 시원합니다.

acceptEX 는 MS 가 만든 확장 Network API 라더군요. Linux 나 다른 OS 환경에서는 발생하지 않는 오류입니다.
개인적인 생각에 확장 API 를 사용하지않는 설정 이기 때문에 안정성과는 큰 관련이 없을 것이라 여겨집니다.

오류가 나온지 한참 되었는대도 아파치에서 수정되지 않는 걸 보면 MS 쪽 문제 일려나요


<추가>

Win32DisableAcceptEx 는 Apache version 2.0.49 부터 이후 버전에만 가능합니다

Apache 1.X 버전을 사용하고 있는 분들은 다른 해결책을 찾으셔야 합니다.


출처 - http://www.mypda.net/1151 


===============================================================================================

윈도우2008에 apche사용하는 서버 확인중발견.

웹사이트가 현저히 느리며 아파치가 반복적으로 죽는 현상.

에러로그를 확인해보니. 

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

 

반복적으로뜬다.

 

확인해보니

"PHP와 Apache2.2를 WIndows기반하에서 운영할 경우에 발생할 수 있는 Bug"

해결하기위해선 httpd.conf파일 수정해야한다

 

 

Win32DisableAcceptEx     <ㅡ 이부분추가해준다

User daemon
Group daemon

 

안되면

 

<IFModule mpm_winnt_module>

Win32DisableAcceptEx             <ㅡ 추가

</IFModule mpm_winnt_module>

 

해도 안되면

 

<IfModule !mpm_netware_module>

Win32DisableAcceptEx       <ㅡ 추가
<IfModule !mpm_winnt_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User nobody
Group nobody

</IfModule>
</IfModule>

 

 

아..두시간동안 이걸 못찾았다...

에러로그를 봤지만 검색해도 안나올거같아서 그냥넘어갔는데

로그는 절대 무시하지말자!!!!!!!!!!!!!!!!!!!!!! 

출처 - http://www.ssongacademy.com/?document_srl=648 
Posted by linuxism
,