<article class=“article fmt article-content”><p>原文网址:解决jstack的报错:Unable to open socket file_IT利刃出鞘的博客-CSDN博客</p><h2>简介</h2><p><strong>阐明</strong></p><p>本文介绍解决jstack的报错的办法,报错信息为:Unable to open socket file。</p><p>分享Java技术星球:自学精灵 - IT技术星球</p><p>具体报错信息:</p><blockquote>过程号: Unable to open socket file: target process not responding or HotSpot VM not loaded <br/>The -F option can be used when the target process is not responding</blockquote><p><strong>概述</strong></p><p>咱们通常会用jstack、jmap等工具排查CPU占用高、内存占用低等问题。但在应用这些命令时有时会报错,如下所示:</p><p></p><h2>起因及解决方案</h2><h2>1.用户权限不正确</h2><p><strong>起因</strong></p><p>如果执行java程序的用户与执行jstack命令的用户不统一,会导致报错。</p><p><strong>解决方案</strong></p><p>切换到执行java程序的那个用户再执行jstack命令。</p><p><strong>办法</strong></p><p>第一步:查找java过程对应的用户(命令为:ps -aux | grep “过程号”)</p><p>例:</p><p></p><p>第二步:应用su命令切换到对应用户</p><pre><code>su root</code></pre><h2>2./tmp门路没有过程信息</h2><p><strong>起因</strong></p><p>java过程启动的时候,默认会在/tmp/hsperfdata_$USER上面创立一个以PID命名的文件,外面蕴含了一些信息,会被jstack、jmap命令应用到。当文件不存在时就会报上述谬误。</p><p>导致/tmp下没有相干文件的起因有:</p><ol><li>应用了docker来启动</li><li>应用了systemd来启动(systemd用于监控过程状态)</li></ol><p><strong>解决方案</strong></p><ul><li>如果是应用了docker来启动</li></ul><p><!—-></p><ul><li>解决办法:须要进入到容器中去执行jstack命令。</li></ul><p><!—-></p><ul><li>如果是应用了systemd来启动</li></ul><p><!—-></p><ul><li>解决办法:批改一项配置:PrivateTmp=true改为false</li></ul></article>