JStack查找阻塞原因https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-server-activity/

问题描述 投票:1回答:1

我调试了一个JavaFx应用程序,该应用程序得到了黑屏锁定(不再响应)并且CPU使用率很高。

它可能是一个隐藏的锁定窗口或与模式对话框有关的东西。还有一个用Swing编写的安装程序,如果有新的更新出现,它会显示自己的对话框,也许这与JavaFx冲突?

我怎么能从jstack输出中找到原因?

该应用程序正在使用OpenJDK 11。

C:\Users\dprutean>jstack -m 9244
Error: -m option used
Cannot connect to core dump or remote debug server. Use jhsdb jstack instead

C:\Users\dprutean>jstack  9244
2020-01-14 08:03:11
Full thread dump OpenJDK 64-Bit Client VM (13+33 mixed mode):

Threads class SMR info:
_java_thread_list=0x0000000066bcb920, length=25, elements={
0x000000000394d000, 0x0000000003557000, 0x000000000357a800, 0x00000000035b3000,
0x00000000035b4800, 0x00000000035b6800, 0x00000000035b7800, 0x000000004d844000,
0x000000004d9aa800, 0x0000000055e65800, 0x0000000055e89800, 0x00000000560b8800,
0x0000000056447800, 0x00000000564cb800, 0x00000000564ae800, 0x00000000580a3000,
0x00000000582ab000, 0x00000000582a7000, 0x00000000582a6800, 0x00000000582ac800,
0x00000000582ad800, 0x00000000582aa000, 0x00000000582a8800, 0x00000000582a9800,
0x0000000067459000
}

"main" #1 prio=5 os_prio=0 cpu=468.75ms elapsed=43898.09s tid=0x000000000394d000 nid=0x6c4 waiting on condition  [0x000000000312d000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@13/Native Method)
        - parking to wait for  <0x00000000226c3cb8> (a java.util.concurrent.CountDownLatch$Sync)
        at java.util.concurrent.locks.LockSupport.park(java.base@13/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(java.base@13/AbstractQueuedSynchronizer.java:885)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(java.base@13/AbstractQueuedSynchronizer.java:1039)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(java.base@13/AbstractQueuedSynchronizer.java:1345)
        at java.util.concurrent.CountDownLatch.await(java.base@13/CountDownLatch.java:232)
        at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:213)
        at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:156)
        at javafx.application.Application.launch(Application.java:227)
        at com.wisecoders.dbs.DbSchema.main(DbSchema.java:62)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@13/Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@13/NativeMethodAccessorImpl.java:62)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@13/DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(java.base@13/Method.java:567)
        at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85)
        at com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94)
        at com.install4j.runtime.launcher.WinLauncher.main(WinLauncher.java:25)

"Reference Handler" #2 daemon prio=10 os_prio=2 cpu=0.00ms elapsed=43898.03s tid=0x0000000003557000 nid=0x4498 waiting on condition  [0x000000000389f000]
   java.lang.Thread.State: RUNNABLE
        at java.lang.ref.Reference.waitForReferencePendingList(java.base@13/Native Method)
        at java.lang.ref.Reference.processPendingReferences(java.base@13/Reference.java:241)
        at java.lang.ref.Reference$ReferenceHandler.run(java.base@13/Reference.java:213)

"Finalizer" #3 daemon prio=8 os_prio=1 cpu=0.00ms elapsed=43898.03s tid=0x000000000357a800 nid=0x586c in Object.wait()  [0x000000004d2ff000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(java.base@13/Native Method)
        - waiting on <no object reference available>
        at java.lang.ref.ReferenceQueue.remove(java.base@13/ReferenceQueue.java:155)
        - locked <0x0000000021f5dbd8> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(java.base@13/ReferenceQueue.java:176)
        at java.lang.ref.Finalizer$FinalizerThread.run(java.base@13/Finalizer.java:170)

"Signal Dispatcher" #4 daemon prio=9 os_prio=2 cpu=0.00ms elapsed=43898.02s tid=0x00000000035b3000 nid=0x62f8 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Attach Listener" #5 daemon prio=5 os_prio=2 cpu=0.00ms elapsed=43898.02s tid=0x00000000035b4800 nid=0x6968 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread0" #6 daemon prio=9 os_prio=2 cpu=8578.13ms elapsed=43898.02s tid=0x00000000035b6800 nid=0x1ff8 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   No compile task

"Sweeper thread" #7 daemon prio=9 os_prio=2 cpu=7546.88ms elapsed=43898.02s tid=0x00000000035b7800 nid=0x11c0 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Service Thread" #8 daemon prio=9 os_prio=0 cpu=15.63ms elapsed=43898.00s tid=0x000000004d844000 nid=0x6134 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Common-Cleaner" #9 daemon prio=8 os_prio=1 cpu=0.00ms elapsed=43897.96s tid=0x000000004d9aa800 nid=0x2444 in Object.wait()  [0x000000004e02f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(java.base@13/Native Method)
        - waiting on <no object reference available>
        at java.lang.ref.ReferenceQueue.remove(java.base@13/ReferenceQueue.java:155)
        - locked <0x0000000021fea588> (a java.lang.ref.ReferenceQueue$Lock)
        at jdk.internal.ref.CleanerImpl.run(java.base@13/CleanerImpl.java:148)
        at java.lang.Thread.run(java.base@13/Thread.java:830)
        at jdk.internal.misc.InnocuousThread.run(java.base@13/InnocuousThread.java:134)

"Java2D Disposer" #10 daemon prio=10 os_prio=2 cpu=0.00ms elapsed=43896.89s tid=0x0000000055e65800 nid=0x670c in Object.wait()  [0x000000005675f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(java.base@13/Native Method)
        - waiting on <no object reference available>
        at java.lang.ref.ReferenceQueue.remove(java.base@13/ReferenceQueue.java:155)
        - locked <0x000000002244e758> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(java.base@13/ReferenceQueue.java:176)
        at sun.java2d.Disposer.run(java.desktop@13/Disposer.java:144)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"AWT-Windows" #12 daemon prio=6 os_prio=0 cpu=0.00ms elapsed=43896.85s tid=0x0000000055e89800 nid=0x50ac runnable  [0x0000000056b5e000]
   java.lang.Thread.State: RUNNABLE
        at sun.awt.windows.WToolkit.eventLoop(java.desktop@13/Native Method)
        at sun.awt.windows.WToolkit.run(java.desktop@13/WToolkit.java:312)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"JavaFX-Launcher" #16 prio=5 os_prio=0 cpu=296.88ms elapsed=43896.53s tid=0x00000000560b8800 nid=0x4494 waiting on condition  [0x0000000057abf000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@13/Native Method)
        - parking to wait for  <0x00000000227025c0> (a java.util.concurrent.CountDownLatch$Sync)
        at java.util.concurrent.locks.LockSupport.park(java.base@13/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(java.base@13/AbstractQueuedSynchronizer.java:885)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(java.base@13/AbstractQueuedSynchronizer.java:1039)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(java.base@13/AbstractQueuedSynchronizer.java:1345)
        at java.util.concurrent.CountDownLatch.await(java.base@13/CountDownLatch.java:232)
        at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:856)
        at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
        at com.sun.javafx.application.LauncherImpl$$Lambda$160/0x00000000575c7500.run(Unknown Source)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"QuantumRenderer-0" #17 daemon prio=5 os_prio=0 cpu=664781.25ms elapsed=43896.27s tid=0x0000000056447800 nid=0xaa8 runnable  [0x0000000057f1e000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@13/Native Method)
        - parking to wait for  <0x00000000226c44a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(java.base@13/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@13/AbstractQueuedSynchronizer.java:2081)
        at java.util.concurrent.LinkedBlockingQueue.take(java.base@13/LinkedBlockingQueue.java:433)
        at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@13/ThreadPoolExecutor.java:1054)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@13/ThreadPoolExecutor.java:1114)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@13/ThreadPoolExecutor.java:628)
        at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"InvokeLaterDispatcher" #19 daemon prio=5 os_prio=0 cpu=903656.25ms elapsed=43896.21s tid=0x00000000564cb800 nid=0x5514 in Object.wait()  [0x0000000058fff000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at java.lang.Object.wait(java.base@13/Native Method)
        - waiting on <no object reference available>
        at java.lang.Object.wait(java.base@13/Object.java:326)
        at com.sun.glass.ui.InvokeLaterDispatcher.run(InvokeLaterDispatcher.java:127)
        - locked <0x00000000226c47f8> (a java.lang.StringBuilder)

"JavaFX Application Thread" #20 prio=5 os_prio=0 cpu=1590890.63ms elapsed=43896.21s tid=0x00000000564ae800 nid=0xb94 runnable  [0x00000000590fe000]
   java.lang.Thread.State: RUNNABLE
        at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
        at com.sun.glass.ui.win.WinApplication$$Lambda$202/0x0000000057b674a8.run(Unknown Source)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"Thread-2" #21 daemon prio=5 os_prio=0 cpu=12703.13ms elapsed=43896.15s tid=0x00000000580a3000 nid=0x28f0 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Prism Font Disposer" #22 daemon prio=10 os_prio=2 cpu=0.00ms elapsed=43895.38s tid=0x00000000582ab000 nid=0x4bf0 in Object.wait()  [0x00000000613bf000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(java.base@13/Native Method)
        - waiting on <no object reference available>
        at java.lang.ref.ReferenceQueue.remove(java.base@13/ReferenceQueue.java:155)
        - locked <0x000000002298ecb0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(java.base@13/ReferenceQueue.java:176)
        at com.sun.javafx.font.Disposer.run(Disposer.java:93)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"pool-4-thread-1" #25 prio=5 os_prio=0 cpu=937.50ms elapsed=43894.26s tid=0x00000000582a7000 nid=0x41b0 waiting on condition  [0x000000005714f000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@13/Native Method)
        - parking to wait for  <0x00000000233fab90> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(java.base@13/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@13/AbstractQueuedSynchronizer.java:2081)
        at java.util.concurrent.LinkedBlockingQueue.take(java.base@13/LinkedBlockingQueue.java:433)
        at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@13/ThreadPoolExecutor.java:1054)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@13/ThreadPoolExecutor.java:1114)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@13/ThreadPoolExecutor.java:628)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"pool-2-thread-1" #26 prio=5 os_prio=0 cpu=0.00ms elapsed=43894.26s tid=0x00000000582a6800 nid=0x4bc4 waiting on condition  [0x000000005724f000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@13/Native Method)
        - parking to wait for  <0x0000000022b2e718> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(java.base@13/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@13/AbstractQueuedSynchronizer.java:2081)
        at java.util.concurrent.LinkedBlockingQueue.take(java.base@13/LinkedBlockingQueue.java:433)
        at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@13/ThreadPoolExecutor.java:1054)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@13/ThreadPoolExecutor.java:1114)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@13/ThreadPoolExecutor.java:628)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"Cleaner-0" #30 daemon prio=8 os_prio=1 cpu=0.00ms elapsed=43893.73s tid=0x00000000582ac800 nid=0x59cc in Object.wait()  [0x000000006395e000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(java.base@13/Native Method)
        - waiting on <no object reference available>
        at java.lang.ref.ReferenceQueue.remove(java.base@13/ReferenceQueue.java:155)
        - locked <0x00000000232a2c60> (a java.lang.ref.ReferenceQueue$Lock)
        at jdk.internal.ref.CleanerImpl.run(java.base@13/CleanerImpl.java:148)
        at java.lang.Thread.run(java.base@13/Thread.java:830)
        at jdk.internal.misc.InnocuousThread.run(java.base@13/InnocuousThread.java:134)

"mysql-cj-abandoned-connection-cleanup" #31 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=43893.28s tid=0x00000000582ad800 nid=0xf10 in Object.wait()  [0x0000000063c5e000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(java.base@13/Native Method)
        - waiting on <no object reference available>
        at java.lang.ref.ReferenceQueue.remove(java.base@13/ReferenceQueue.java:155)
        - locked <0x0000000023527618> (a java.lang.ref.ReferenceQueue$Lock)
        at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:85)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@13/ThreadPoolExecutor.java:1128)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@13/ThreadPoolExecutor.java:628)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"mysql-cj-abandoned-connection-cleanup" #32 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=43893.15s tid=0x00000000582aa000 nid=0x1cf8 in Object.wait()  [0x0000000065d5e000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(java.base@13/Native Method)
        - waiting on <no object reference available>
        at java.lang.ref.ReferenceQueue.remove(java.base@13/ReferenceQueue.java:155)
        - locked <0x00000000237ccbd8> (a java.lang.ref.ReferenceQueue$Lock)
        at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:85)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@13/ThreadPoolExecutor.java:1128)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@13/ThreadPoolExecutor.java:628)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"TimerQueue" #33 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=43892.89s tid=0x00000000582a8800 nid=0x597c waiting on condition  [0x000000006605e000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@13/Native Method)
        - parking to wait for  <0x00000000237cce78> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(java.base@13/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@13/AbstractQueuedSynchronizer.java:2081)
        at java.util.concurrent.DelayQueue.take(java.base@13/DelayQueue.java:217)
        at javax.swing.TimerQueue.run(java.desktop@13/TimerQueue.java:171)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"DbSchema: Reverse engineering pre-fetch" #42 prio=5 os_prio=0 cpu=890.63ms elapsed=43885.08s tid=0x00000000582a9800 nid=0x2cf8 waiting on condition  [0x00000000579bf000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@13/Native Method)
        - parking to wait for  <0x0000000022b2e718> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(java.base@13/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@13/AbstractQueuedSynchronizer.java:2081)
        at java.util.concurrent.LinkedBlockingQueue.take(java.base@13/LinkedBlockingQueue.java:433)
        at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@13/ThreadPoolExecutor.java:1054)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@13/ThreadPoolExecutor.java:1114)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@13/ThreadPoolExecutor.java:628)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"DbSchema: Browse Task" #50 prio=5 os_prio=0 cpu=312.50ms elapsed=43855.36s tid=0x0000000067459000 nid=0x5f98 waiting on condition  [0x000000005734f000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@13/Native Method)
        - parking to wait for  <0x0000000022b2e718> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(java.base@13/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@13/AbstractQueuedSynchronizer.java:2081)
        at java.util.concurrent.LinkedBlockingQueue.take(java.base@13/LinkedBlockingQueue.java:433)
        at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@13/ThreadPoolExecutor.java:1054)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@13/ThreadPoolExecutor.java:1114)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@13/ThreadPoolExecutor.java:628)
        at java.lang.Thread.run(java.base@13/Thread.java:830)

"VM Thread" os_prio=2 cpu=11859.38ms elapsed=43898.04s tid=0x0000000003553000 nid=0x4d64 runnable

"VM Periodic Task Thread" os_prio=2 cpu=31.25ms elapsed=43898.00s tid=0x000000004d844800 nid=0x6950 waiting on condition

JNI global refs: 116, weak refs: 14

multithreading javafx stack stack-trace jstack
1个回答
-1
投票

SSH根登录到您的MySQL实例后,此查询可能会找到您的阻止查询内容。

IS-tx-wait-block-qrys.sql以帮助研究繁忙的系统最近更新于20191227 wh

如果有帮助,请通过电子邮件将共享评论发送到[email protected]

摘自https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-server-activity/处的文章

20191227在MariaDB 10.3.10上进行了测试

SELECT r.trx_idwaiting_trx_id,r.trx_mysql_thread_idwaiting_thread,r.trx_querywaiting_query,b.trx_idblocking_trx_id,b.trx_mysql_thread_idblocking_thread,b.trx_queryblocking_query FROM information_schema.innodb_lock_waits w INTR。 block_trx_id INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;

© www.soinside.com 2019 - 2024. All rights reserved.