동일한 프로세스를 실행하는 여러 Windows 2008 R2 24 코어 서버가 있지만 프로세스의 각 인스턴스마다 다른 데이터 세트가 있습니다. 일반적으로 프로세스의 2-4 인스턴스는 각 서버에서 실행됩니다. 프로세스는 x64 용으로 컴파일되고 GUI가 있으며 Workstation GC를 사용합니다..NET 4.0 프로세스 실행이 몇 초 동안 일시 중지되고 스왑 파일 작업으로 인해 Full GC가 진행됩니까?
초마다 프로세스는 GC 수를 로컬 디스크의 로그 파일로 출력합니다. 로그는 다른 많은 것들에도 사용됩니다. 가끔씩,이 프로세스 중 하나가 5 초 이상 실행을 일시 중지합니다. 나는 아무 것도 그 기간 동안 기록에 쓰여지는 것을 볼 수 없다. 이런 일이 발생할 때마다 Gen2 GC의 수가 1 씩 증가하는 것으로 나타납니다.
이것은 드물게 발생합니다. 이것은 모든 프로세스에서 10000 Gen2 GC마다 한 번 발생합니다.
각 시스템에는 RAM의 모든 프로세스를 유지할 수있는 충분한 RAM이 있습니다.
오늘 아침에 프로세스 중 하나에서 9 초의 일시 중지가 발생했으며 이번에는 영향을받은 프로세스와 전체 시스템에 대한 성능 카운터를 캡처했습니다. 당시 실행중인 다른 프로세스는 영향을받지 않았습니다.
일시 정지 이전에 일시 정지 한 후 비교 : 하락 프로세스에 대한
- 가상 바이트, 페이지 파일 바이트, 가상 바이트, 작업 설정 및 작업 세트 - 개인 성능 카운터의 분석은 다음을 보여줍니다 대략 같은 금액 - 1Gb. Private Bytes는 프로세스의 크기에 대한 아이디어를 제공하기 위해 3.1Gb에서 2.1Gb로 떨어졌습니다. 프로세스에 대한
- 핸들 수는 일시 정지 중에
- CPU 사용량이 안정 스파이크하지 않은 약 1 기가
- 페이지 오류/초 증가, 전체 시스템에 대한 8705에 8835에서
- 가능한 바이트 감소
누구든지이 활동이 스와핑의 원인 일 수 있음을 확인할 수 있습니까? 컴퓨터에 충분한 RAM이있는 것을 감안할 때 이러한 일시 중지를 수정하기위한 제안이 있습니까?
업데이트 # 1 (2012년 3월 5일는) :
는 프로세스 중 하나 오늘 6.5 초 일시 정지를 경험했다. .NET Clr 메모리 성능 카운터는 LOH의 크기가 변경되지 않았지만 Gen 2 힙의 크기와 모든 힙의 크기 및 총 커밋 된 바이트가 700MB로 감소한 것을 보여줍니다. 예약 된 총 예약 바이트 수 250 Mb. 그래서 Gen2의 많은 쓰레기가이 특정 GC에서 회수 된 것처럼 보입니다.업데이트 # 2 (2012년 3월 6일는) :
는 프로세스 중 하나 오늘 7 초간 정지를 경험했다. 다음은 누적되었습니다. Gen 2 힙 크기 (.NET CLR 메모리) by 900Mb 모든 힙의 숫자 바이트 (.NET CLR 메모리) 900Mb로 총 수탁 바이트 수 (.NET CLR 메모리) by 800Mb 총계 예약 된 바이트 (.NET CLR 메모리) 가상 바이트 (프로세스) : 550Mb 작업 집합 (프로세스) : 800Mb 작업 집합 - 개인 (프로세스) 페이지 파일 바이트 (프로세스) by 800Mb 개인 바이트 800 메가은 LOH가 있었다 같은
이것을 고려해 보셨나요? http://marcgravell.blogspot.com/2011/10/assault-by-gc.html? –
.Net 성능 카운터를 보았습니까? 예를 들어 전후 LOH의 크기를 보면 재미있을 수 있습니다. – svick
이 질문에 대한 답변을 검색하는 동안 Marc Gravell의 게시물을 보았습니다. LOH가 범인 인 것으로 밝혀지면 Marc의 게시물에서 제안 사항을 사용하여 문제를 완화 할 수 있습니다. – sevzas