2014-12-05 2 views
0

IIS 호스팅 WCF 서비스가 18GB와 같은 대용량 메모리를 사용 중이고 서버 속도가 느려졌습니다.GC가 서버 모드에서 메모리를 수집하지 않음

I 미니 덤프 파일을 분석하면 1GB 또는 활성 개체 만 표시됩니다. GC가 메모리를 지우지 않고 GC가 64 비트 시스템에서 서버 모드로 실행 중이어야한다는 것을 이해합니다. 모든 컴퓨터가 왜 멈추고 앱이 대용량 메모리를 차지하는 지 알기 원하십니까?

+0

질문에 더 자세히 설명해주십시오. 18GB를 어떻게 사용하고 있으며 "미니 덤프 파일"을 어떻게 생성하고 분석했는지 어떻게 알 수 있습니까? "전체 컴퓨터가 스톨 중"이라고 말하면 서버의 다른 응용 프로그램도 느려 집니까? –

+0

예, 다른 Windows 서비스가 큐에서 요청을 실행하지 못했습니다. Task Manager에서 성능 카운터 및 미니 덤프를 수집했습니다. 나는 그것의 근본 원인을 발견하고 지금 해결책을 얻었다. .NET 4.5가이 문제를 해결했습니다. 고맙습니다 – srini

답변

0

GC가 서버 모드에서 실행 중이므로 성능 향상을 위해 구성되었습니다. 서버 모드에서 GC를 실행하면 GC 사용률이 높기 때문에 GC가 자주 트리거되지 않으며 서버 모드에서는 메모리 사용량에 상한선이 있기 때문에 성능이 향상됩니다. 여기에서 문제는 GC를 트리거 한 프로세스 CLR에 상한선이 도달하여 한 번에 거대한 18GB의 메모리를 지우려고 했으므로 시스템 리소스의 90 %를 사용하고 나머지 응용 프로그램이 지연되었습니다.

우리는 재시동을 시도했지만 영원히 진행되어서 프로세스를 종료해야했습니다. 워크 스테이션 모드 GC가 부드럽고 깨끗합니다. 유일한 차이점은 응답 시간이 1.5GB 할당 후 GC로 인해 약간의 지연이 있음을 나타냅니다.

한 가지 추가 정보 : .NET 4.5 버전에는 GC에서이 문제를 해결 한 개정판이 있습니다.

관련 문제