JAVA进阶Work, Work~

dump堆内存时遇到的异常 : Unable to open s

2019-03-04  本文已影响0人  海边的贝壳林

我使用jmap来dump堆内存的时候遇到了下列的错误

[root@node03 ~]# jmap -dump:format=b,file=heap.hprof 9017
9017: 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

在网上找到原因: 使用jmap dump 堆内存的时候, 要使用运行这个程序的用户去dump, 其他用户不可以的.

所以刚刚那个命令应该是这样的:

[root@node03 ~]# ps -ef| grep 9017
kafka    9017     1  0 Feb12   ?      02:38:07 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/bin/javaxxxxxxxxxx

## 发现是kafka用户启动的程序. 所以下面以kafka用户身份去执行jmap的dump操作.
[root@node03 ~]# sudo -u kafka jmap -dump:format=b,file=heap.hprof 9017

标个重点: sudo -u [user] jmap -dump:format=b,file=heap.hprof [pid]

这里的-dump:format=b,file=heap.hprof可以换成jmap的其他命令, 比如: sudo -u [user] jmap -histo [pid]


下面是我参考的网址答案.

I just found that jmap (and presumably jvisualvm when using it to generate a heap dump) enforces that the user running jmap must be the same user running the process attempting to be dumped.

https://stackoverflow.com/a/27414967/5275545

上一篇 下一篇

猜你喜欢

热点阅读