2017-04-25 1 views
0

우리는 하나의 .NET webapi 응용 프로그램 (서비스 자동 시작 공급자가 있음)이 있습니다.w3wp 메모리 사용량이 하루에서 많음

응용 프로그램은 우리의 buildserver에 의해 빌드되고 출력은 여러 서버에 배치되며 응용 프로그램에 대한 요청은로드 밸런서를 통해 라우트됩니다.

사이트는 몇 달 동안 잘 수행되었습니다. 며칠 전 우리는 응용 프로그램 풀이 다른 서버보다 3 배 더 많은 메모리를 사용하고 있음을 발견했습니다.

다른 서버보다 많은 메모리를 사용하는 서버는 iisreset, 서버 재부팅 등의 작업을 수행하고 있습니다. 응용 프로그램 풀은 시작 직후 다른 메모리보다 3 배 많은 메모리를 할당합니다. 슈퍼 이상한 물건에

그리고 지금 ....

중 하나에 메모리, I는 "첨부"는 dotTrace 프로파일 러 (원격 사용 remoteagent.exe을)에서 개최되고 있었는지를 확인하려면 서버. 풀은 재활용 된 것처럼 보였고 일단 부팅되면 더 이상 3x 메모리를 할당하지 않았습니다 (따라서 메모리 스냅 샷은 쓸모가 없었습니다). 작업자 프로세스에서 프로파일 러를 "연결 해제"하고 응용 프로그램 풀이 더 이상 3x 메모리를 사용하지 않는 것으로 나타났습니다. 나는 서버를 리부팅했고, 여전히 3x 메모리를 사용하지 않았다.

그래서 ... w3wp 프로세스에 프로파일 러를 연결하는 것만으로도 iisreset 및 재부팅 후에도 여전히 낮은 메모리 사용률로 작동하므로 영구적 인 방식으로 문제가 해결 된 것 같습니다.

동일한 문제가 발생한 # 2 서버에서 동일한 절차를 시도했지만 문제가 해결되었습니다.

dotTrace가 내 작업자 프로세스에 뭔가 이상한 것처럼 보입니다 :)?

누구든지이 문제의 원인을 파악할 수 있습니까? 같은 문제가있는 서버가 (다른 환경에서는) 더 많지만이 문제의 근본 원인을 알고 싶습니다.

답변

0

짧은 대답 : 나는 w3wp 프로세스에 연결되는 Microsoft Monitoring Agent의 프로필러 인 원인을 발견했습니다.

긴 대답 :

.NET Runtime version 4.0.30319.34014 - The profiler was loaded successfully. Profiler CLSID: '{AD5651A8-B5C8-46CA-A11B-E82AEC2B8E78}'. Process ID (decimal): xxxx. Message ID: [0x2507]. 

다른 프로파일 러가 W3WP의에 부착 된 결론에 저를 이끄는 이벤트 로그에

세부 사항. 레지스트리에서 CLSID를 검색하면 모니터링 에이전트가 관련 되었음이 분명해졌습니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WAS 

및 변경 : 프로파일 러는 처음으로 윈도우 레지스트리를 검색하여 비활성화 할 수 있습니다

Environment = COR_PROFILER={AD5651A8-B5C8-46ca-A11B-E82AEC2B8E78} Cor_Enable_Profiling=1 

에 :

Environment = COR_PROFILER={AD5651A8-B5C8-46ca-A11B-E82AEC2B8E78} Cor_Enable_Profiling=0 

나보다 프로파일 링을 해제에 더 나은 방법이 있다고 생각 레지스트리를 직접 변경하십시오. (아마도 Microsoft Monitoring Agent를 제거 하시겠습니까?)

... w 3x 메모리 사용으로 인해 프로파일 러가 여전히 미스테리입니다.

관련 문제