如何在远程 Java Web 应用程序上进行内存分析

Posted

技术标签:

【中文标题】如何在远程 Java Web 应用程序上进行内存分析【英文标题】:How to do memory profiling on remote java web application 【发布时间】:2008-10-11 17:12:17 【问题描述】:

我知道我们可以使用 JProfiler 等工具。 有没有关于如何配置它以仅通过远程监控显示内存使用情况的教程?

有什么想法吗?

【问题讨论】:

【参考方案1】:

你有 VisualGC,它不是很先进,但你可以看到你的应用程序的内存使用情况(垃圾、旧、perm 等......)

http://java.sun.com/performance/jvmstat/visualgc.html

继续: 你在远程机器上启动一个守护进程监控(http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstatd.html,参见安全段落)

JAVA_HOME/bin/jstatd -J-Djava.security.policy=jstatd.all.policy

这里有一个名为 jstatd.all.policy 的文件,其中包含:

    grant codebase "file:$java.home/../lib/tools.jar"    
permission java.security.AllPermission;
;

在远程机器上,您获得了应用程序的 pid 以使用 jps 工具进行调试:

http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html#jps

最后在您的本地机器上启动 visualgc :

visualgc the_pid@remote_machine_address

【讨论】:

【参考方案2】:

我通常使用 YourKit,这是一款出色的应用程序(需要许可证)。

在你的网络服务器启动/关闭脚本(catalina.sh for tomcat)中输入:

JAVA_OPTS="-Djava.awt.headless=true -agentlib:yjpagent -Xrunyjpagent:sessionname=Tomcat"

您需要已下载 YourKit 并将其添加到您的库路径(我也在 catalina.sh 中执行此操作):

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/yourkit/yjp-6.0.16/bin/linux-x86-32

然后您可以在本地桌面上启动 YourKit 客户端并远程连接。

【讨论】:

【参考方案3】:

您可以更改 Java 应用程序的 VM 参数以允许远程分析 类似-agentlib:jprofilerti=port=25000

General explanation of JProfiler.

例子:

NetBeans

Intellij

【讨论】:

【参考方案4】:

使用 Jprofiler 分析您的应用程序。以下是使用 Jprofiler 配置 Tomcat 的步骤。

    在 Linux 机器上打开来自/root 目录的.bash_profile 文件。 在

    中输入 jprofiller 位置(使用下面的命令导出)
    .bash_profile file
    export LD_LIBRARY_PATH=/dsvol/jprofiler6/bin/linux-x86
    

    转到 Tomcat 安装目录。从bin 文件夹打开catalena.sh 文件。 在catelana.sh文件中输入以下详细信息(在catalena.sh文件中默认只有红色信息和黑色信息)。

    export JPROFILER_HOME
    JAVA_OPTS="-Xms768m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m -Dfile.encoding=UTF8 -agentpath:/opt/Performance/jprofiler7/bin/linux-x86/libjprofilerti.so=port=8849 $CATALINA_OPTS"
    

    通过执行starup.sh 命令从 bin 文件夹启动服务器

【讨论】:

【参考方案5】:

我听说过 VisualVM 的好东西,这里有一篇关于如何远程启动它的文章:

Java VisualVM to profile a remote server

编辑: 我在这里写了一篇关于如何通过 SSH 隧道设置远程分析的博文:

http://kamilmroczek.com/2012/11/16/168787859/

【讨论】:

这只是链接。请添加有关您的答案的更多信息 VisualVM 不支持远程机器上的内存分析,只支持 CPU 分析

以上是关于如何在远程 Java Web 应用程序上进行内存分析的主要内容,如果未能解决你的问题,请参考以下文章

VS2019 - 使用 Cmake 项目在 Linux 上进行 Sudo 远程调试

如何在 java 10 或更高版本 java 11 中运行现有的 JAVA Web 启动应用程序

虚拟机(JVM)如何加载类

如何在 webview 应用程序中发送推送通知,其中通知在网站和 PWA 上进行

IDEA远程调试Tomcat程序

java web 中连接数据库并在HTML上进行增删改查