2007~2011/IIS2009. 3. 4. 08:50
IIS 운영하다보면 참 다양한 이벤트 로그 많이 경험하시죠? 
아무 것도 묻지도 않고 따지지도 않았으면 좋겠습니다만... 그래도 궁금한 건 찾아봐야죠. 시스템 이벤트 로그에 기록된 W3SVC 1011, 1010 메시지에 대해서 아래와 같이 정리하였습니다. 


[환경]
Windows Server 2003 R2 EE SP2 
IIS 6.0

 
[현상] 
시스템 이벤트 로그 W3SVC 1011, 1010 원인 분석 요청
 
이벤트 형식:        경고
이벤트 원본:        W3SVC
이벤트 범주:        없음
이벤트 ID:        1010
날짜:                2009-03-02
시간:                오전 01:05:05
사용자:                N/A
설명:
응용 프로그램 풀 'LAIGOAppPool'에 사용되는 프로세스가 Ping에 응답하지 못했습니다. 프로세스 ID는 '1230'입니다. 
 
이벤트 형식:        경고
이벤트 원본:        W3SVC
이벤트 범주:        없음
이벤트 ID:        1011
날짜:                2009-03-02
시간:                오전 01:06:10
사용자:                N/A
설명:
응용 프로그램 풀 'LAIGOAppPool'에 사용되는 프로세스에 World Wide Web 게시 서비스와의 심각한 통신 오류가 있습니다. 프로세스 ID는 '5656'입니다. 데이터 필드에 오류 번호가 있습니다.
 
 
[원인]
World Wide Web Publishing Service(WWW Service)는 주기적으로 worker processes(w3wp.exe)를 ping하여 그 반응을 확인하는 방식으로 worker processes의 상태를 모니터링하며 ping에 응답하지 않거나 통신 채널이 끊어질 경우 WWW Service가 그 위치에서 다른 woker processes 를 만듭니다.
 
이와 같이 해당 응용 프로그램 풀을 사용하는 worker processes에서 hang 또는 crash 가 발생하였을 때 W3SVC 1010, 1011 메지지가 발생할 수 있습니다. Crash 된 이후 해당 Application Pool 을 사용하는 요청이 들어오면 새로운 w3wp.exe 프로세스가 실행됩니다. 


[WORKAROUND]
1. 웹 응용 프로그램이 응답하지 않는 hang 현상을 분석하기 위해서는 문제가 재현될 때 process hang 메모리 덤프 분석을 진행합니다. (약은 약사에서... 덤프는?)

2. 웹 응용 프로그램 소스 코드를 점검하여 오류를 유발할 수 있는 코드를 수정합니다. (말은 쉽지.....요) 해당 소스 코드에 데이터베이스에 액세스 한다면 해당 데이터베이스 또한 점검이 필요합니다.

3. KB 알려진 이슈를 보면 NT AUTHORITY\NETWORK SERVICE 계정이 레지스트리 액세스 할 수 있는 권한이 충분하지 않는 경우에도 이러한 현상이 발생할 수 있습니다. REGMON TOOL 을 사용하여 Permission 오류가 감지되는 레지스트리 키에 대해서 NETWORK SERVICE 의 Full Control 을 부여하고 IIS를 재시작합니다. (쉽지 않죠...;;)
 
[분석결과]
1. http.sys error log
 
2009-03-01 16:05:05 192.168.0.1 1320 192.168.0.100 2005 HTTP/1.1 POST /data/web/laigodata.asmx 503 158922488 AppOffline LAIGOAppPool
// 오류 급증 시 자동 보호 기능으로 인해 EESAppPool 서비스가 일시 중지 되었으며 이 Application Pool 에 수신된 모든 요청에 즉시 반환하는 상태 
2009-03-01 16:06:10 192.168.0.2 1927 192.168.0.100 2005 HTTP/1.1 POST /data/web/InfoData.asmx - 158922488 Connection_Abandoned_By_AppPool LAIGOAppPool
// 핸들을 닫아서 보류 중인 요청의 연결을 끊거나 예기치 않게 종료된 응용 프로그램 풀의 작업자 프로세스
 
 
2. Worker processes PID 및 프로세스 시작 시간 확인
 가. IISAPP 명령을 사용하여 Application PoolID와 Worker Process PID 확인 
 나. PSTOOLS 에 포함되어 있는 PSLIST 를 사용하여 프로세스 시작 시간을 확인
 다. 참고 이미지 
 

 
[참고자료]
상태 모니터링 구성
 
How to use the Debug Diagnostics tool to troubleshoot an IIS process that stops unexpectedly 
 
Configuring Rapid-Fail Protection in IIS 6.0
 
HTTP API의 오류 로깅
 
A user receives a "Service Unavailable" error message when the user browses your Web site that is hosted on IIS 6.0


작성자 : Lai Go / 작성일자 : 2009.03.04
Posted by Lai Go