启动sentinel-dashboard 一直卡住,jstack日志如下
- Dominant language
- Java
- Stars
- 23.1k
- Forks
- 8.1k
- PR merge metrics
- No merged PRs in 30d
Description
```
2020-07-28 12:21:28
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.144-b01 mixed mode):
"sentinel-heartbeat-send-task-thread-2" #19 daemon prio=5 os_prio=0 tid=0x000000001bad6800 nid=0x3858 waiting on condition [0x000000001f17e000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x0000000701f6cf78> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
"sentinel-time-tick-thread" #18 daemon prio=5 os_prio=0 tid=0x000000001b0f8800 nid=0x2c10 waiting on condition [0x000000001c12f000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at java.lang.Thread.sleep(Unknown Source)
at java.util.concurrent.TimeUnit.sleep(Unknown Source)
at com.alibaba.csp.sentinel.util.TimeUtil$1.run(TimeUtil.java:37)
at java.lang.Thread.run(Unknown Source)
"DestroyJavaVM" #17 prio=5 os_prio=0 tid=0x0000000002800800 nid=0x3bd4 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"sentinel-heartbeat-send-task-thread-1" #15 daemon prio=5 os_prio=0 tid=0x000000001c5a8000 nid=0x734 waiting on condition [0x000000001d1ff000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x0000000701f6cf78> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
"sentinel-command-center-executor-thread-1" #14 prio=5 os_prio=0 tid=0x000000001be29800 nid=0x262c runnable [0x000000001d3af000]
java.lang.Thread.State: RUNNABLE
at java.net.DualStackPlainSocketImpl.accept0(Native Method)
at java.net.DualStackPlainSocketImpl.socketAccept(Unknown Source)
at java.net.AbstractPlainSocketImpl.accept(Unknown Source)
at java.net.PlainSocketImpl.accept(Unknown Source)
- locked <0x0000000701f890f8> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at com.alibaba.csp.sentinel.transport.command.SimpleHttpCommandCenter$ServerThread.run(SimpleHttpCommandCenter.java:188)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
"Service Thread" #9 daemon prio=9 os_prio=0 tid=0x00000000199ce000 nid=0x7ac runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C1 CompilerThread2" #8 daemon prio=9 os_prio=2 tid=0x0000000019991800 nid=0x8d8 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread1" #7 daemon prio=9 os_prio=2 tid=0x000000001998a800 nid=0x382c waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" #6 daemon prio=9 os_prio=2 tid=0x0000000019987800 nid=0x3bfc waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x0000000019986800 nid=0x3bf8 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x000000001ad73800 nid=0x3bf4 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" #3 daemon prio=8 os_prio=1 tid=0x00000000028fb800 nid=0x3bf0 in Object.wait() [0x000000001acce000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x0000000701fb8be0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x0000000701fb8be0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
"Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x00000000028f1000 nid=0x3bec in Object.wait() [0x000000001abcf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x0000000701f942a8> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Unknown Source)
at java.lang.ref.Reference.tryHandlePending(Unknown Source)
- locked <0x0000000701f942a8> (a java.lang.ref.Reference$Lock)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
"VM Thread" os_prio=2 tid=0x0000000019938000 nid=0x3be8 runnable
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x0000000002816800 nid=0x3bd8 runnable
"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x0000000002818000 nid=0x3bdc runnable
"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x0000000002819800 nid=0x3be0 runnable
"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x000000000281b000 nid=0x3be4 runnable
"VM Periodic Task Thread" os_prio=2 tid=0x000000001ae04800 nid=0x16f4 waiting on condition
JNI global references: 518
```
Contributor guide
Research direction
Start by reproducing the dashboard startup hang and collecting startup logs alongside the provided jstack output. Inspect SimpleHttpCommandCenter.ServerThread.run and TimeUtil, then trace dashboard initialization to identify which startup step is blocking. Done means the cause is confirmed, the dashboard starts normally, and a regression test or reproducible verification is documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100