none
Windows Server 2008R2 Standard 의 handle 수 증가에 대해 RRS feed

  • 질문

  • 안녕하세요.

    고객 사이트에 Windows Server 2008R2  가 설치 되어 운영될 예정인데 시범운영 테스트 중에

    handle 값에 대해 궁금하여 질문 드립니다.

    저희 애플리케이션이 설치 되어 운영중입니다.

    widnwos 작업 관리자 의 프로세스 옵션에서 핸들 값을 체크하여 표시하고 java.exe 의 핸들값 변화를 체크 했는데 어느순간까지는 급격하게 증가했다가 일정 순간이 되면 2~3 개 씩 미량으로 증가 합니다.  핸들은 linux  의 open files 갯수랑 같은 거라고 알고 있습니다.

    처음에는 애플리케이션의 connection후의  close에 문제가 있나 싶었는데 로직상으로는 close가 되어 있었습니다.

    어는 순간부터는 핸들 값에 변동이 없어서 문제가 없다고 판단했다가도 이후 다시 미량으로 증가를 하는 것이 보입니다.  

    궁금한것은 일정 수량 (700) 에 달하면 미량으로 증가하는데 애플리케이션에서 close가 잘되어 있다면 이후 어는 한계점 부터는 더이상 증가하지 않는 것인지 알고 싶습니다.

    애플리케이션 정보:   

      JDK:   JDK 1.7 

      애플리케이션: JAVA로 만들짐 (netty 사용)

      DB:  MSSQL 2008

      메모리: 4 G (RAM)

      핸들증가: 주로 client 에 대한 connect 시도시

    [Windows 작업 관리자 (프로세스) 표시 예제 ]

    이미지 이름     PID   CPU    핸들    스레드      설명

    java.exe        7632  00    2036    147          Java(TM) Platform SE binary


    • 편집됨 우주왕 2016년 12월 13일 화요일 오전 5:59
    2016년 12월 13일 화요일 오전 4:50

답변

  • 안녕하세요?

    하기 자료를 참고하시면 Windows 2008 R2 같이 64bit를 사용하는 환경에서 Handle count 문제가 있을 수 있다고 보는 기준점은 3,000개 입니다.

    [참고절]
    64-bit Windows XP, Server 2003, Vista, Server 2008, 7, Server 2008 R2:
    For most processes, if higher than 3,000 handles open, investigate.
    Exceptions are:
    System 20,000
    lsass.exe 50,000
    store.exe 50,000
    sqlsrvr.exe 50,000

    다만 현재 개발하신 프로그램의 실행파일의 Handle값이 정상적인지 확인하고 싶으시면 하기 자료를 참고하셔서

    Process Explorer를 통한 참고값 확인하실 수 있습니다.

    [참고절]

    Now the question becomes, what type of handles are open by the application?
    There are tools such as the Microsoft Sysinternals tools such as Handle and Process Explorer that will let you look into the open handles.
    In this blog, we are going to be using Process Explorer since it is UI driven and it is easier for most of the audience.
    In Process Explorer, to see the handles used by a process, you will have to go thru a few steps.
    Click on View > Select Columns…
    Click on the ‘Process Performance’ tab > ‘Handle Count’
    What you will notice is the new column called ‘Handles’
    Move the ‘Handles’ columns next to ‘Working Set’
    Sort it by the ‘Handles’ columns
    Now, we have the process that is consuming the most amount of handles just like in Task Manager.
    But we still don’t see what type of handles they are.
    Click on View > Lower Pane View > Handles
    Note:  This will enable the “Show Lower Pane” by default.
    Click View > Show Unnamed Handles and Mappings
    What you will see is the second pane at the bottom that has ‘Type’ and ‘Name’
    In our sample application, they are ‘Event’ handles to ‘\Sessions1\1\BaseNamedObjects\TestLimit’

    [참고자료]
    How to troubleshoot a handle leak?
    https://blogs.technet.microsoft.com/yongrhee/2011/12/19/how-to-troubleshoot-a-handle-leak/

    2017년 1월 25일 수요일 오전 7:29
    중재자