자바 스레드 덤프 분석

자바 스레드 덤프 분석

맥락: 가비지 수집과 관련하여 15~40초가 소요되는 몇 가지 문제가 발생했으며, 이 시간 동안 애플리케이션은 '일시 중지' 상태입니다.

가비지 수집 로그 'Times: user=0.04 sys=0.00, real=14.54 sec'에서 볼 수 있는 내용은 다음과 같습니다.

사용자/sys 시간이 매우 작고 실제 시간이 크다는 사실은 가비지 수집 작업에 짧은 시간이 걸렸지만 어떤 이유로 응용 프로그램이 스레드가 안전한 지점에 도달할 때까지 기다리고 있었음을 의미합니다. . 우리는 이러한 일시 중지 중 하나에서 스레드 덤프를 얻었으며 누군가가 내가 여기서 보고 있는 내용에 대해 약간의 정보를 제공할 수 있기를 바랍니다.

"AsyncAppender-Worker-JVM_ASYNC" #25 daemon prio=5 os_prio=0 tid=0x00007fd8daaa5800 nid=0x4ed5 waiting on condition [0x00007fd90abf2000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000c1876d30> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObje

"RMI RenewClean-[10.12.113.3:40608]" #21 daemon prio=5 os_prio=0 tid=0x00007fd83401c800 nid=0x4ed2 in Object.wait() [0x00007fd90aff4000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:142)
        - locked <0x00000000c18b23a8> (a java.lang.ref.ReferenceQueue$Lock)
        at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:536)
        at java.lang.Thread.run(Thread.java:745)


"RMI Reaper" #17 prio=5 os_prio=0 tid=0x00007fd8dbfb0000 nid=0x4ece in Object.wait() [0x00007fd90b7f6000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00000000c0002d00> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:142)
        - locked <0x00000000c0002d00> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:158)
        at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:351)
        at java.lang.Thread.run(Thread.java:745)

관련 정보