análisis de volcado de subprocesos de Java

análisis de volcado de subprocesos de Java

Para el contexto: hemos tenido algunos problemas con la recolección de basura donde vemos que tarda entre 15 y 40 segundos, durante este tiempo la aplicación está en estado "pausada".

Esto es lo que vemos en nuestros registros de recolección de basura 'Tiempos: usuario=0.04 sys=0.00, real=14.54 seg'

El hecho de que los tiempos usuario/sistema sean muy pequeños y los reales sean grandes (creo) esto significa que el acto de recolección de basura tomó poco tiempo, pero por alguna razón la aplicación estaba esperando que los subprocesos alcanzaran un punto seguro. . Logramos obtener un volcado de hilo durante una de estas pausas y espero que alguien pueda arrojar algo de luz sobre lo que estoy viendo aquí:

"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)

información relacionada