최근 라이브 서버에 문제가 발생하여 웹앱의 응답이 중지되었습니다. 서버를 재부팅 할 때까지 503 오류가 발생했습니다. 결국 나는 그것을 httperr.log로 다시 추적하고 1_Connections_Refused 오류를 많이 발견했습니다.
추가 조사에 따르면 비 페이징 풀 제한에 도달 한 것으로 나타났습니다. 그 이후 우리는 Poolmon.exe를 사용하여 비 페이징 풀 메모리를 모니터링하고 있으며 문제를 일으키는 태그를 식별했다고 생각합니다.
Tag Type Allocs Frees Diff Bytes Per Alloc
Even Nonp 51,231,806 50,633,533 684,922 32,878,688 48
poolmon.exe / g를 사용하면 매핑 된 드라이버가 [<unknown> Event objects]로 표시됩니다.
이것은 전혀 도움 이 되지 않습니다 . 우리 팀은이 문제를 연구하는 데 상당한 시간을 보냈으며 특정 응용 프로그램이나 서비스로 범위를 좁히는 프로세스를 찾지 못했습니다. 나는 대부분의 사람들이 비 페이징 메모리 재설정을 볼 때까지 컴퓨터에서 프로세스를 종료하여 문제를 해결하는 것처럼 보인다는 것을 알게되었습니다. 이것은 생산 기계에서 작업 할 때보 고 싶은 것이 아닙니다.
작업 관리자를 열고 프로세스 목록을 보면 NP 풀 값이 105K 인 MailService.exe가 두 번째로 나열된 프로세스 값보다 36K 더 높습니다. 과거에 메일 서버에 문제가 있었으므로 (이 문제와 관련이있을 수도 있고 아닐 수도 있음) 내 직감은 이것이 문제를 일으키는 것입니다.
그러나 서비스를 다시 시작하기 전에 "직감"보다 조금 더 확실합니다.
또한 poolmon.exe / c를 사용해 보았지만 항상 오류를 반환합니다.
unable to load msvcr70.dll/msvcp70.dll
localtag.txt를 만들지 않습니다. 내 동료가 인터넷에서 pooltag.txt를 다운로드해야했기 때문에 인터넷에서 찾을 수 없기 때문입니다. 우리는 win 디버거 또는 win DDK가 설치되어 있지 않습니다 (볼 수 있음). 어쩌면 위의 오류 중 하나가 설치되어 있지 않아서 발생했을 수도 있지만 모르겠습니다.
마침내 나는 시도했다 :
C:\windows\system32\driver\findstr /m /l Even *.sys
이것은 상당히 큰 크기의 .sys 파일 목록을 반환했으며 현재 문제에 전혀 도움이되지 않았습니다.
그래서 내 질문은 이것입니다 : 이 메모리 누수의 원인을 좁힐 다른 방법이 있습니까?
최신 정보:
아래에서 제안한 것처럼 마지막 날 풀 비 페이징 바이트를 로깅하여 프로세스가 추세를 확인하고 있는지 확인했습니다. 대부분의 경우 모든 프로세스는 사용법이 상당히 정적 인 것으로 보입니다. 그들 중 두 명은 약간 똑딱 거렸다. 앞으로 며칠 동안 계속해서 모니터링하겠습니다.
또한 프로세스 중 어느 것도 과도한 수의 핸들을 사용하지 않는 것 같습니다.
업데이트 2 :
지난 몇 주 동안 이것을 모니터링했습니다. 개별 프로세스에 대한 비 페이징 바이트 풀과 총 비 페이징 바이트 풀은이 시간 동안 비교적 안정적으로 유지되었습니다. 이 시간 동안 Windows가 업데이트되고 서버가 다시 부팅되었으므로 문제가 해결되었는지 궁금합니다. 나는 이것이 이전이기 때문에 Nonpaged Bytes Pool에서 꾸준한 성장을 보지 못하고 있습니다.