문제

생산 환경에서 ASPX 또는 ASMX 또는 CUSTOM이든 W3WP.EXE 프로세스 내에서 메모리 압력을 가장 많이 유발하는 ASP.NET HTTP 요청을 어떻게 발견 할 수 있습니까? 나는 여기서 메모리 누출을 의미하지 않습니다. 그것은 모든 물건을 멋지게 처분하는 좋은 건강한 응용 프로그램입니다. Microsoft의 세대 GC는 잘 작동합니다. 그러나 일부 요청은 W3WP 프로세스가 메모리 발자국을 상당히 늘리지 만 요청 기간 동안 만 발생합니다.

SAAS 앱의 생산 환경의 비용 효율성 및 확장성에 대한 문제는 단순히 가장 메모리 호그 "페이지"에서 개발 부서에 정기적으로보고하고, 그 (메모리) 압력이 속한 위치를 반환합니다. , 말하자면.

다음과 같은 것이없는 것 같습니다.
httpcontext.request.peakprivatebytes 또는 .currentprivatebytes
또는
세션 .peakprivatebytes

도움이 되었습니까?

해결책

성능 모니터와 같은 도구를 사용하여 w3wp.exe 프로세스의 "프로세스 작동 세트"를 모니터링하고 데이터베이스에 기록 할 수 있습니다. 그런 다음 IIS 서버의 HTTP 로그와 관련이있을 수 있습니다.

Perfmon 데이터와 HTTP 로그를 모두 SQL 데이터베이스에 쓰는 데 도움이됩니다. 그런 다음 t-sql을 사용하여 관찰 된 메모리 압력 시간 주위에 날짜/시간으로 요청 된 페이지를 가져올 수 있습니다. DatePart 함수를 사용하여 필요에 따라 두 번째 또는 분의 원하는 정확도로 반올림 된 날짜/시간을 작성하십시오.

도움이 되었기를 바랍니다.

고마워요, -Glenn

다른 팁

사용중인 경우 InProc 세션 상태에서 모든 세션 데이터는 W3WP의 메모리에 저장되며 증가의 원인 일 수 있습니다.

나는 그것에 대해 걱정하지 않을 것입니다. 요청 중에 GC가 일어나고있을 수 있으며 CLR은 물건을 움직일 수 있도록 메모리를 할당하고 있습니다. 또는 ASPNET와 함께 제공되는 다른주기적인 서비스 일 수도 있습니다.

세대 0,1,2 GC 이벤트 등의 Perf Counter Analysis 등을 사용하여 Spelunking을 갈 준비가되어 있지 않으면이 "문제"를 해결하는 것에 대해 걱정하지 않을 것입니다.

어쨌든 문제가되는 것처럼 들리지 않습니다. 호기심 만하면됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top