Application crash 로 인한 웹 서비스 장애가 발생하였을 때 나타나는 대표적인 증상과 체크사항
"IIS Crash"는 IIS 관련 프로세스가 비정상 종료할 경우를 의미합니다. 일반적으로 crash가 발생하게 되면 브라우저에서는 “500 – Internal Server Error(내부 서버 요류)”와 함께 “페이지를 표시할 수 없습니다”라는 에러 메시지가 표시됩니다. 문제 발생 당시 이벤트 로그에는 다음과 같은 경고 메시지가 남게 됩니다.
<IIS 5>
Event Type: Error Event Source: Service Control Manager Event Category: None Event ID: 7031 Description: World Wide Web Publishing Service 서비스가 예기치 않게 X번 종료했습니다. X 밀리초 안에 다음의 수정 작업을 합니다: 서비스 다시 시작. |
<IIS 6>
Event Type: Warning Event Source: W3SVC Event Category: None Event ID: 1011 Description: A process serving application pool '<appPool_name>' suffered a fatal communication error with the World Wide Web Publishing Service. The process id was 'XXXX'. Event Type: Warning Event Source: W3SVC Event Category: None Event ID: 1009 Description: A process serving application pool ‘<appPool_name>’ terminated unexpectedly. The process id was ‘XXXX’. |
문제 발생 원인을 살펴보기 위해서는 메모리 Dump를 수집하여야 합니다. "메모리 Dump”란 프로세스의 메모리 순간 상태 정보를 Disk에 파일로 저장하는 단계를 의미합니다. Crash에 관한 Dump를 수집하기 위해 아래 나와있는 Debug Diagnostic tool에서 문제가 발생하기 전에 rule을 세팅합니다. 이후, 문제가 발생하였을 때 덤프가 수집되면 Debug Diagnostic tool의 dump count가 증가하게 됩니다.
IIS Diagnostics Toolkit (x86)
Crash 증상의 대표적 원인에는 Stack Overflow, Stack Corruption, Heap Corruption, Divide by Zero, Null Pointer Exception을 포함한 Unhandled Exception등이 있습니다