최근에 우리의 GlassFish 서버가 몇 시간 동안 성공적으로 실행 된 후 CPU 중 하나가 갑자기 100 %로 빠져 나가는 문제를 발견했습니다. 이 응용 프로그램은이 시간 동안 응답이 없습니다. 다시 시작한 후에는 문제가 결국 다시 발생합니다 (대개 몇 시간 후). 글래스 피쉬 그리즐리 스레드가 100 % CPU 시간을 소비 함
내가 스레드가 뭘하고 있었는지 볼이 명령을 실행 :및 asadmin 생성-JVM-보고서 --type = 실
을 결과 출력에서 하나 개의 스레드 보였다 (크기 순서를 소모 매우 의심스러운 다른 스레드보다 더 많은 CPU 시간) :
스레드 실행 정보 :
Thread "Grizzly-kernel-thread(1)" thread-id: 27 thread-state: RUNNABLE Running in native
at: sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
at: sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:273)
at: sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:255)
at: sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:136)
at: sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
at: sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at: com.sun.grizzly.TCPSelectorHandler.select(TCPSelectorHandler.java:513)
at: com.sun.grizzly.SelectorHandlerRunner.doSelect(SelectorHandlerRunner.java:190)
at: com.sun.grizzly.SelectorHandlerRunner.run(SelectorHandlerRunner.java:132)
at: java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at: java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at: java.lang.Thread.run(Thread.java:662)
스레드 동기화 통계 :이 스레드가 차단 된 시간 (모니터/입력 다시 입력)의
번호 : 4520이 스레드가 통지를 대기 시간의
번호 (즉, WAITING 또는 TIMED_WAITING 상태였습니다.) : 0
이 스레드의 총 CPU 시간 : 2,753 초 703,125,000 나노초.
이 스레드의 사용자 레벨 CPU 시간 : 2,753 초 703,125,000 나노초.
개체 모니터는 현재이 스레드가 보유 또는 요청 : []
할 수있는 싱크로 나이저 (예 : ReentrantLock와 및 ReentrantReadWriteLock)이 thread에 의해 보관 유지 : []
우리는 Windows Server 2008에서 글래스 피시 3.1.2.2을 실행 R2 엔터프라이즈. 진행 상황에 대한 통찰력은 높이 평가됩니다.
어느 jdk를 사용하고 계십니까? –
우리는 JDK 버전 1.6.0_37을 사용하고 있습니다. – Jeff