`
can_do
  • 浏览: 248762 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Do家】关于jstack命令执行失败问题

阅读更多
********************************************
关于jstack命令执行失败问题

[root@localhost ~]# jstack 93875
93875: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
********************************************
【分析】
从问题现象看,提示jstack命令执行失败,建议通过-F强制获取。

考虑以下方面:
1、执行jstack命令的jdk版本与目标进程的jdk版本是否一致?
2、是否在当前进程owner用户下执行?

>>>核对jdk版本是一致,一般os配置java_home并配置path的的话,jdk版本是一致的;
>>>核对进程owner用户和当前执行jstack用户是否一致,结果是:不一致。

【解决】
切换用户到当前进程owner用户下,执行jstack,命令成功。

/////////////begin///////////
[root@localhost ~]# su - jvmuser
Last login: Wed Nov  4 14:09:13 CST 2020 on pts/1
[jvmuser@localhost ~]$ jstack 93875
2020-12-08 11:17:00
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.111-b14 mixed mode):

"Attach Listener" #220147 daemon prio=9 os_prio=0 tid=0x00007f4f3c001000 nid=0x10cf4 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"XMemcached-HeartBeatPool[MemcachedClient-0]-216919" #220146 daemon prio=5 os_prio=0 tid=0x00007f4f0002b800 nid=0x10cc1 waiting on condition [0x00007f4f201d6000]
   java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000000ba19ec00> (a java.util.concurrent.SynchronousQueue$TransferStack)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1066)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
/////////////end///////////////

【小结】
1、执行jstack命令需要在当前用户下执行;

注意:通过jinfo <pid> |grep user.name,查看进程是哪个用户启动的;

2、执行jstack的jdk版本建议与正在运行的JVM的jdk版本一致,至少前者高于后者;



【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics