Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JProfiler:无法检测远程JVM_Java_Tomcat_Java 11_Jprofiler - Fatal编程技术网

Java JProfiler:无法检测远程JVM

Java JProfiler:无法检测远程JVM,java,tomcat,java-11,jprofiler,Java,Tomcat,Java 11,Jprofiler,我正在Ubuntu 18.04服务器上用OpenJDK 11运行Tomcat 9(作为用户Tomcat)。我希望能够将JProfiler 11连接到Tomcat进程 在过去,我只是简单地使用了通过ssh连接到远程JVM的选项,而JProfiler可以定位该进程。在这台机器上,JProfiler从未找到Tomcat进程 我尝试使用su和sudo选项切换到tomcat用户。我甚至启用了直接作为tomcat登录。不管怎样,JProfiler都找不到JVM进程 我认为这是因为/tmp/hsperfdat

我正在Ubuntu 18.04服务器上用OpenJDK 11运行Tomcat 9(作为用户
Tomcat
)。我希望能够将JProfiler 11连接到Tomcat进程

在过去,我只是简单地使用了通过ssh连接到远程JVM的选项,而JProfiler可以定位该进程。在这台机器上,JProfiler从未找到Tomcat进程

我尝试使用
su
sudo
选项切换到
tomcat
用户。我甚至启用了直接作为
tomcat
登录。不管怎样,JProfiler都找不到JVM进程

我认为这是因为
/tmp/hsperfdata\u tomcat
文件夹是空的。我已经设置了
-XX:+UsePerfData
,尽管默认情况下应该启用它(尝试
JAVA\u选项
CATALINA\u选项
),但这并没有解决任何问题。我已经检查了tomcat命令行,没有任何东西可以禁用
UsePerfData
。我还监视了该文件夹,以查看是否以某种方式填充了
hsperfdata
,但随后被删除-该文件从未创建过

如何在带有OpenJDK 11的Ubuntu 18.04上启用Tomcat 9评测

更新:


使用
jps-l-m
作为
tomcat
运行不会返回任何输出。然而,以
root
的身份运行它确实列出了
tomcat
java进程,尽管在
/tmp/hsperfdata\u tomcat
中没有条目,我只是遇到了这个问题。我无法看到在tomcat用户下启动的JVM:在jprofiler(11)中,通过sudo切换到tomcat用户时没有显示JVM

这是jprofiler上传的文件的权限问题。jpenable上传到tomcat无权访问的my remote home目录下

解决办法是:

  • ssh删除节点(与jprofiler使用的用户相同)
  • chmod555${HOME}
  • chmod555-R${HOME}/.jprofiler11
    。Tomcat用户需要访问同一目录中的
    ${HOME}/.jprofiler11/agent/11082_11.0.2/jprofiler11/bin/jpenable
    和jar文件
  • 测试:
    sudo-u tomcat${HOME}/.jprofiler11/agent/11082_11.0.2/jprofiler11/bin/jpenable

  • 然后,您就可以通过远程ssh+SudoTomcat将您的笔记本电脑jprofiler连接到该tomcat用户。

    这可能是版权问题吗?尝试暂时使
    /tmp/hsperfdata\u tomcat
    世界可写,重新启动已分析的JVM,并检查是否有任何变化。我将在维护窗口中尝试一下。手动检查权限,我觉得很好。属于
    tomcat:tomcat
    ,具有
    tomcat
    用户的写入权限。我认为问题在于
    JProfiler
    试图通过
    /proc/pid/root
    访问
    /tmp
    文件夹。与这里描述的问题类似,这在我的系统上失败:不,JProfiler不使用/proc/pid。如果jps作为根目录工作,那么jpenable可能也作为根目录工作。它告诉我它无法连接,因为目标PID是以其他用户的身份运行的。