2012-06-20 7 views
18

IIS 7.5에서 ASP.NET 4.0 응용 프로그램을 실행하고 있습니다. 하루에 여러 번 응용 프로그램 풀이 예기치 않게 재활용됩니다. 이 경우 시스템 로그에 다음 이벤트가 표시됩니다.응용 프로그램 풀 'X'를 제공하는 프로세스가 Windows Process Activation Service와의 치명적인 통신 오류가 발생했습니다.

응용 프로그램 풀 'X'를 (를) 제공하는 프로세스가 Windows Process Activation Service와 심각한 통신 오류를 겪었습니다. 프로세스 ID는 '5768'입니다. 데이터 필드에 오류 번호가 있습니다.

또는

'X'응용 프로그램 풀을 처리하는 프로세스가 Ping에 응답하지 못했습니다. 프로세스 ID는 '1032'입니다.

Faulting application name: w3wp.exe, version: 7.5.7600.16385, time stamp: 0x4a5bcd2b Faulting module name: clr.dll, version: 4.0.30319.269, time stamp: 0x4ee9ae83 Exception code: 0xc00000fd Fault offset: 0x00001916 Faulting process id: 0x508 Faulting application start time: 0x01cd4d8958ecf9ad Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll Report Id: 8dcc413b-b98a-11e1-8075-001c23d6d910 

그래서 내가 IIS Debugging Tools을 설치하고 충돌 규칙을 설정 지정 "특정 IIS 웹 응용 프로그램 :

거의 항상이 같은 응용 프로그램 로그에 정확한 동시에 해당 이벤트가있다 풀 (pool) ", 첫 번째 기회 예외에 대한 로깅 없음,"고급 설정 "(예외, 중단 점, 이벤트) 아래의 아무 것도 없습니다. 내가 디버거를 부착 한 이후, 나는 몇 가지 '경고'수준을 왔

adplus -crash -pn w3wp.exe -NoDumpOnFirst -o c:\logs 

그러나 :

또한 (동시에) 다음 명령 줄을 사용하여 Windows 디버깅 도구에서 ADPlus를 실행 해요 시스템 로그의 메시지 ("프로세스 서비스 응용 프로그램 풀 'X'에 치명적인 통신 오류가 발생했습니다 ...")에 관한 메시지가 있지만 응용 프로그램 로그에서 해당 오류 수준 이벤트가 더 이상 표시되지 않습니다.

내가 얻을 수 있었던 유일한 것은이 다음 (약이 50 있었다)이다

[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 3300. Exit code - 0x800703e9 
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 4992. Exit code - 0x800703e9 
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 5456. Exit code - 0x800703e9 
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 4924. Exit code - 0x800703e9 

종료 코드 0x800703e9는 운이 어딘가에 스택 오버 플로우를 나타냅니다가해야하기 때문에 일단 찾을 수 있으면 쉽게 고칠 수 있습니다.

그러나 이렇게하려면 내 크래시 덤프에서 더 많은 정보가 필요하므로 WinDbg로 열 수 있고 "! clrstack"명령을 사용하여 문제를 정확하게 지적 할 수 있습니다.

내 질문 : 디버깅 도구가 잘못 구성되었거나 이벤트 로그를 잘못 이해합니까? "Windows Process Activation Service와의 치명적인 통신 오류"와 관련하여 시스템 로그에 이벤트가 표시 될 때마다 우리의 응용 프로그램 풀이 재활용되고있는 것처럼 보입니다. 그러나 IIS 디버깅 도구 또는 ADPlus에서 이러한 이벤트가 발생하면 크래시 덤프 정보가 표시되지 않습니다. 어떤 이유로 디버거를 연결했기 때문에 시스템 로그 경고 이벤트에 해당하는 응용 프로그램 로그에 "오류"이벤트가 더 이상 나타나지 않습니다. 이유를 모르겠다. 나는 어쨌든 CLR 정보가 포함 된 전체 크래시 덤프를 가져와 문제가있는 곳을 파악할 수 있어야합니다.

내가 언급 할 수있는 유일한 다른 점은 Windows 오류보고 서비스가 실행되고 있지 않다는 점입니다. 그것이 필요한지 아닌지 확실하지 않습니다.

도움 주셔서 감사합니다.

+0

관련 http://stackoverflow.com/questions/7204444/iis7-a-process-serving-application-pool-yyyyy-suffered-a-fatal-communication – RJFalconer

답변

4

응용 프로그램 로그에있는 예외 코드와 스레드 종료 코드가 모두 스택 오버플로가 있음을 나타냅니다.스레드가 스택 오버플로 오류와 함께 종료 될 때 프로세스가 충돌하지 않는 이유는 수수께끼입니다. 어쨌든, 스택 오버 플로우 예외에 휴식을 수 있도록, 명령은 다음과 같습니다

sxe sov 

응용 프로그램 풀 32 비트 프로세스로 구성되어 있기 때문에 당신이 당신의 경우 디버거의 86 버전을 사용 할 필요가 있습니다.

관련 문제