ASP.NET 성능 카운터가 일시적으로 0으로 떨어짐

ASP.NET 성능 카운터가 일시적으로 0으로 떨어짐

VM 이미지에 일부 성능 문제가 있습니다(VM 호스트에는 액세스할 수 없고 게스트 OS에만 액세스할 수 있습니다).

서버가 요청 푸시를 중지하는 기간이 10~60초 사이인 이유를 확인하려고 합니다.

이 작업을 수행하는 동안 여러 성능 카운터가 작동하지만 이러한 "죽은" 기간이 시작된 직후 모든 ASP.NET 응용 프로그램 카운터(활성 세션, 파이프라인 인스턴스 수, 실행 요청)가 0으로 떨어진 후 매우 이상한 점을 발견했습니다. "죽은" 기간을 벗어나면 바로 정상 수준으로 돌아갑니다. 여기 그래프를 참조하세요:

여기에 이미지 설명을 입력하세요

나는 해당 세션이 카운터 통계에서 삭제되었음에도 불구하고 전체 기간 동안 계속 실행되고 있음을 100% 확신합니다.

전에 카운터에서 이런 행동을 본 사람이 있나요? 이러한 카운터가 오작동하고 일반적으로 작동 불능 기간을 발생시키는 일종의 VM 리소스 부족이 발생할 수 있습니까?

답변1

방금 이 문제가 발생했습니다. 이로 인해 짜증이 나고 다른 많은 문제가 발생했습니다. 해당 낮은 지점 동안 요청은 정체되거나 BeginRequest10 MapRequestHandler초 이상 후에 갑자기 다시 상태를 통해 진행되기 시작합니다.

근본 원인은 IIS 앱이 자체 /bin 디렉터리에 파일을 작성했기 때문입니다. IIS는 이를 감지하고 소프트 재활용을 실행하여 일시적으로 수신 작업자 수를 0으로 줄였습니다(표시 Pipeline Instance Count및 이 질문을 찾은 이유). 그러나 이는 다른 도구에서는 새로운 프로세스 등으로 나타나지 않았습니다.

우리는 이를 사용하여 모든 IIS 프로세스의 미니 덤프를 수행하여 이를 발견했습니다.디버그Diag2Fiddler로 작은 끝점을 ping하여 발견한 속도 저하 중 MS에서 발생합니다. DebugDiag에는 CrashHangAnalytic 보고서가 있습니다. 해당 보고서에는 많은 정보가 있었습니다. 및 를 HttpRuntime Shutdown Report포함한 스택 추적을 사용하여 을 찾는 데 시간이 걸렸습니다 .System.Web.DirectoryMonitor.FireNotificationsSystem.Web.Compilation.BuildManager.OnWebHashFileChange

이로 인해 prod bin 디렉터리를 조사한 결과 잘못된 이메일 로그가 거기에 기록되어 IIS가 앱을 재활용하게 된 것을 발견했습니다. 이는 New Relic에 있는 앱의 메모리 그래프가 꾸준한 메모리 누수로 보이는 것을 보여 주었지만 실제로는 전체 앱이 (일종의) 다시 시작되고 기존 메모리가 증가하고 있었기 때문에 특히 이상했습니다. 일반적인 재활용처럼 보이지 않았고 PID도 동일하게 유지되었습니다. IIS가 어떤 마법을 시도했는지 전혀 모릅니다.

또한 IIS AppPool 고급 설정을 다음에서 제안한 대로 변경해 Disable Recycling for Configuration ChangesTrue이 문제가 방지되지 않았습니다.이 다른 질문. 이 문제를 해결하려면 바이너리를 변경하고 재배포해야 했습니다.

관련 정보