欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

jstack报错Unabletoopensocketfile解决,

来源: javaer 分享于  点击 45618 次 点评:79

jstack报错Unabletoopensocketfile解决,


目录
  • 简介
  • 原因及解决方案
    • 1.用户权限不正确
    • 2./tmp路径没有进程信息

简介

说明

本文介绍解决jstack的报错的方法,报错信息为:Unable to open socket file。​

详细报错信息:

进程号: 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、jmap等工具排查CPU占用高、内存占用高等问题。但在使用这些命令时有时会报错,如下所示:

原因及解决方案

1.用户权限不正确

原因

如果执行java程序的用户与执行jstack命令的用户不一致,会导致报错。

解决方案

切换到执行java程序的那个用户再执行jstack命令。

方法

第一步:查找java进程对应的用户(命令为:ps -aux | grep "进程号")

例:

第二步:使用su命令切换到对应用户

su root

2./tmp路径没有进程信息

原因

java进程启动的时候,默认会在/tmp/hsperfdata_$USER下面创建一个以PID命名的文件,里面包含了一些信息,会被jstack、jmap命令使用到。当文件不存在时就会报上述错误。

导致/tmp下没有相关文件的原因有:

  • 使用了docker来启动
  • 使用了systemd来启动(systemd用于监控进程状态)

解决方案

如果是使用了docker来启动

解决方法:需要进入到容器中去执行jstack命令。

如果是使用了systemd来启动

解决方法:修改一项配置:PrivateTmp=true改为false

以上就是jstack报错Unable to open socket file解决的详细内容,更多关于jstack报错解决的资料请关注3672js教程其它相关文章!

您可能感兴趣的文章:
  • jvm-jstack常用的用法示例
  • Java如何通过jstack命令查询日志
  • JVM jstack实战之死锁问题详解
  • Java中工具Jstack的使用实例
  • Java的jstack命令使用示例详解
  • jstack配合top命令分析CPU飙高、程序死锁问题
相关栏目:

用户点评