Windows WEB

IIS 6.0 교착 상태 덤프 파일 분석

2008.07.26 00:18

dhkim 조회 수:28744

IIS 6.0에서 교착 상태 덤프 파일 분석 (OrphanWorkerProcess)
www.wssplex.net

IIS 6.0 에서는 재생이나 오류가 발생하는 경우 해당 응용프로그램 풀을 재생하는 기능을 지원합니다.

그럴때 정상적인 종료가 되지 못할경우 오류이벤트가 발생하게 되나, 일반적으로 크게 문제가 되지는 않지만 일부 웹사이트에서는 장애를 일으키는 경우가 있습니다.

특히나, 기본설정값으로 IIS 6.0 에서는 오류가 급증할경우 코어를 보호하기 위해서 해당 응용프로그램풀을 아예 중지를 시켜 버립니다.

이벤트로그를 유심히 살펴봐야 하는데요., 주로 다음과 같은 이벤트가 발생하게 됩니다.



이때 고아프로세스 형태로 재생을 시도하게 되며, 새로운 요청은 별도의 새로운 작업자프로세스에서 처리하게 됩니다. 고아프로세스는 해당 프로세스가 완전 종료하기 전의 상태입니다.

이 프로세스에는 재생전 요청이나 처리가 되지 못한 요청이 저장되어 있는데, 이를 분석하면 원인을 제공하는 요청이나 처리를 어느정도 파악할수 있습니다.

이때, 디버거를 통해서 해당 프로세스의 크래시 덤프를 떠서 분석을 할수 있는데요,. 덤프를 자동으로 뜰수 있게끔 IIS 6.0 에서는 고아프로세스가 종료할 때 특정 작업을 할수 있는 옵션을 제공합니다.


1. 덤프파일 생성을 위한 설정

다음과 같이 메타베이스에 값을 설정하면 됩니다.

adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanWorkerProcess TRUE
adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanActionExe "F:Debugdebug.cmd"
adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanActionParams "%1%"

debug.cmd 배치파일

@if "%_echo%"=="" echo off
setlocal
    set TIMESTAMP=%DATE:~-9%_%TIME%
set TIMESTAMP=%TIMESTAMP:/=_%
set TIMESTAMP=%TIMESTAMP::=_%
set TIMESTAMP=%TIMESTAMP:.=_%
set TIMESTAMP=%TIMESTAMP: =_%
set FILENAME=F:Debugcrash_%TIMESTAMP%.dmp
set LOG=F:Debuglog.txt
set COMMAND="C:Program FilesDebugging Tools for Windows"cdb.exe -c ".dump /o /mhf %FILENAME%;q" -p %1

echo %COMMAND% > %LOG%
%COMMAND%

endlocal



물론 덤프를 뜰수 있도록 사전에 디버거를 설치해 놓아야 하겠죠..^^

OrphanActionExe: %SystemRoot%System32CScript.exe
OrphanActionParams: C:debuggersadplus.vbs -quiet -hang -p %1%


위와 같이 디버거툴에 내장된 Adplus.vbs 스크립트를 이용해서도 덤프파일을 생성할수 있습니다.



2. 덤프파일 분석

생성된 덤프파일 분석은 이미 설치한 디버거툴을 통해서 분석을 할수 있습니다. 최근에 배포되고 있는  Windbg 툴을 이용해도 좋습니다.

다운로드: http://www.microsoft.com/whdc/devtools/debugging/default.mspx

그런데 이툴은 심볼을 자동 다운로드를 지원하지 않하서, 해당 덤프를 분석해도 별 도움이 되지 않는 아주 간단한 로그만 볼수가 있습니다.

이 툴보다는, 최근에 새로이 배포하는 Debug Diagnostic Tool v1.1 를 권장합니다. 이 툴은 특히 IIS 에 관련된 프로세스 덤프 및 분석, 그리고 관련 심볼을 자동다운로드 하여 분석해 줍니다.

다운로드: http://www.microsoft.com/downloads/details.aspx?familyid=28BD5941-C458-46F1-B24D-F60151D875A3&mg_id=10110&displaylang=en

관련 심볼을 통해서 분석하므로, 아주 상세한 분석을 보여줍니다.



요약에는 WinSock 관련된 문제라고 하는데요. 해당 쓰레드의 상세를 보면, 다음과 같습니다.


실제, 1013 이벤트 에서는 덤프에서 분석이 가능한 데이터가 그리 많지 않습니다.

주로 효과적인 덤프분석은 웹서버에서 루프같은 CPU 로드가 100% 이거나, 메모리 누수같은 메모리 급증이 나타날때 재생되거나 또는 해당 시점에서 직접 덤프를 뜨는 것이 아주 좋습니다.

그럴 경우 다음과 같이 실제 문제가 되는 코드까지도 알수 있습니다.

POST request for   /www/body/A.asp
Request alive for   00:32:47
QueryString   PageName=PageUpload&theAct=upload&overWrite=true
Request mapped to   D:serviceserverinfo.pe.krwwwbodyA.asp
ASP Application   /LM/W3SVC/792638948/Root
ASP Template   D:SERVICEserverinfo.pe.krWWWBODYA.ASP

StreamUpload   sA.CopyTo sB, intEnd - intInfoEnd - 4   D:SERVICEserverinfo.pe.krWWWBODYA.ASP   1697
PageUpload   StreamUpload()   D:SERVICEserverinfo.pe.krWWWBODYA.ASP   1577
Global Scope   PageUpload()   D:SERVICEserverinfo.pe.krWWWBODYA.ASP   192



좀더 상세한 분석은, 각자 운영하는 서버별로 상황이 다르므로 디버거툴을 이용해서 분석해 보시기를 바랍니다. 또한  추가로 다음문서를 더 참고해 보시기 바랍니다.

ASP.NET 교착 상태에 있는 이벤트 ID 1003
http://support.microsoft.com/?kbid=325947

ASP.NET 응용 프로그램에서 웹 서비스를 요청하면 경합, 성능 저하 및 교착 상태가 발생한다
http://support.microsoft.com/kb/821268/ko
번호 제목 글쓴이 날짜 조회 수
56 IIS동시접속자가 많을때, IIS의 튜닝 호스트웨이 2008.06.04 40850
55 w3wp.exe 프로세스의 CPU 점유 hostway 2008.05.15 35988
54 IIS 성능을 높이기 위한 10가지 방법 바람돌이 2008.05.27 31300
53 IIS FTP 서비스 active,passive 접속 과정 호스트웨이 2008.06.04 30288
52 IIS,ASP 상에서 캐쉬 설정 방법 hostway 2008.05.15 29105
» IIS 6.0 교착 상태 덤프 파일 분석 dhkim 2008.07.26 28744
50 IIS 5.0에서 ASP 문제를 해결하는 방법 hostway 2008.05.15 28419
49 IIS의 시스템 모니터에서 성능카운터를 사용하여, 웹 서버 성능을 모니터링 하는 방법 호스트웨이 2008.06.04 27793
48 운영하는 웹사이트 접속자수 알아보기 hostway 2008.05.15 27516
47 웹 로그 분석 가이드 file 바람돌이 2008.05.27 26494
46 IIS 6.0 기본 사용 권한 및 사용자 권한 바람돌이 2008.05.27 25953
45 IIS 제거 (5.0, 5.1, 6.0) shcho 2008.05.15 25359
44 IIS 설치 및 복원 shcho 2008.05.15 24876
43 IIS 보안서버 인증키 백업하는 방법 file 바람돌이 2008.05.27 24049
42 Active Server Pages 오류 'ASP 0131', 오류 해결 방법 dhkim 2008.09.17 23997
41 IIS 구성 백업 shcho 2008.05.15 23934
40 IIS 를 이용한 다중 웹사이트 호스팅 file 바람돌이 2008.05.27 23583
39 windows2003에서 ASP자료실 사용시 200k이상 업로드가 안될때 hostway 2008.05.15 23403
38 2008 FTP 설정 방법 file dhkim 2008.12.18 22867
37 LogPerfV1.EXE 를 이용한 성능 카운터 로그 수집 file 바람돌이 2008.05.27 22509