문제

이 질문에 대한 답은 레지스트리 설정과 Windows 버전, 아마도 메모리가 충분하지 않은 경우 RAM의 양에 따라 다를 수 있음을 이해합니다. 이 질문을 위해 서버에 많은 RAM (3+ gib)이 있다고 가정합니다.

응용 프로그램 (이 경우 제 3 자 신청서)이 한 시간당 수백 만에 핸들을 누출하는 경우, 다른 응용 프로그램이 문제가 발생하기 전에 해당 신청서가 누출 될 수 있습니까? 예를 들어, "문제"라는 의미는 스레드를 시작하지 못하고 파일을 열지 못하는 등을 의미합니다.

수만 개의 핸들을 사용하여 프로세스 (일반적으로 데이터베이스 프로세스)에서 일부 서버 (가볍게로드 된)가 잘 실행되는 것을 보았으므로 이전 10000 핸들 제한은 분명히 여기에 문제가되지 않습니다. (그리고 그것은 어쨌든 가공 당 한도 였으므로 그 시점에있는 내 응용 프로그램에는 영향을 미치지 않을 것입니다.)

누군가가 질문에 대답하거나 핸들 또는 기타 시스템 리소스에 대해 효과적으로 다 떨어지기 전에 Windows 서버가 허용 할 수있는 총 핸들 수에 대해 설명하는 일부 리소스를 제시 할 수 있습니까?

도움이 되었습니까?

해결책

보다 이 주제에 대한 Raymond Chen의 게시물. Window Manager는 프로세스 당 10K 한계를 시행하고 시스템 전체에서 총 제한 32K입니다. 따라서 "만"만으로도 시간당 100 개의 핸들이 누출되면 오작동을 시작하기 전에 며칠의 가동 시간이 있습니다.

모든 핸들이 동일하지는 않습니다. 예를 들어 창 핸들은 DB 핸들이 아니며 다른 규칙을 따를 수 있습니다. 따라서 프로그램이 누출되는지에 따라 이러한 제한이 적용되지 않을 수 있습니다. 이 블로그 게시물도 읽으십시오.

다른 팁

그만큼 데스크탑 힙, 이것은 손잡이가 실제 "물건"이 생명을 나타내는 기억의 풀입니다. 때때로 당신이 할당 한 핸들이 얼마나 많지 않고 각각의 메모리가 물체 그 손잡이 아래에서 사용 중입니다. 힙을 디버깅 할 수 있습니다 이 방법. 이것은 통증 설치하기 위해서.

(이것은 내 답변 중 하나에서 재활용되었습니다)

이러한 값은 새로운 Windows 버전으로 변경 될 수 있으므로 Sysinternals 도구를 사용할 수 있습니다. TestLimit / TestLimit64 대략적인 견적을 얻으려면. X64 버전은 특히 메모리 테스트 (하드 디스크 (스왑 파일)를 사용하여보다 가상 메모리를 얻을 수 있음)의 경우 한동안 실행될 수 있습니다.

도구를 얻으십시오 http://live.sysinternals.com/windowsinternals/ 또는 http://download.sysinternals.com/files/testlimit.zip

명령 줄 옵션 :

-p check process limit
-t check thread limit
-h check handle limit
-u check user handle limit

에 따르면 이것, 10000.

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