我正在Ubuntu 18.04服务器上以OpenJDK 11运行Tomcat 9(以用户tomcat
身份)。我希望能够将JProfiler 11附加到Tomcat进程。
过去,我只使用了通过ssh连接到远程JVM的选项,而JProfiler定位了该进程。在此计算机上,JProfiler从未找到Tomcat进程。
我尝试同时使用su
和sudo
选项切换到tomcat
用户。我什至直接启用了以tomcat
身份登录。无论如何,JProfiler都无法找到JVM进程。
我认为这是因为/tmp/hsperfdata_tomcat
文件夹为空。我已经设置了-XX:+UsePerfData
,尽管默认情况下应该启用它(尝试JAVA_OPTS
和CATALINA_OPTS
),但这并不能解决任何问题。我已经检查了tomcat命令行,没有禁用UsePerfData
的功能。我还监视了文件夹,以查看是否填充了hsperfdata
但随后将其删除了-从未创建该文件。
如何在带有OpenJDK 11的Ubuntu 18.04上启用Tomcat 9的性能分析?
更新:
使用以jps -l -m
运行的tomcat
不返回任何输出。尽管root
中没有任何输入,但是以tomcat
的身份运行它会列出/tmp/hsperfdata_tomcat
java进程。
答案 0 :(得分:0)
我刚遇到这个确切的问题。我看不到JVM在tomcat用户下启动:在jprofiler(11)中,通过sudo切换到tomcat用户显示没有JVM。
这是jprofiler上载的权限问题。 jpenable被上传到我的远程主目录下,tomcat无法访问该目录。
解决方案是:
chmod 555 ${HOME}
chmod 555 -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 + sudo tomcat将笔记本电脑jprofiler连接到该tomcat用户。