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

时间:2008-10-11 17:12:17

标签: java memory profiling

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

有什么想法吗?

5 个答案:

答案 0 :(得分:8)

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

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;
};

在远程计算机上,您使用jps工具调试应用程序的pid:

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

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

visualgc the_pid@remote_machine_address

答案 1 :(得分:7)

我通常使用YourKit,这是一个很好的应用程序(需要许可证)。

在你的webservers启动/关闭脚本(tomcat的catalina.sh)中输入:

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客户端并远程连接。

答案 2 :(得分:3)

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

这样的东西

General explanation of JProfiler

示例:

答案 3 :(得分:1)

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

  1. 在Linux机器中打开.bash_profile目录中的/root文件 在

    中输入jprofiller位置(使用下面的命令导出)
    .bash_profile file
    export LD_LIBRARY_PATH=/dsvol/jprofiler6/bin/linux-x86
    
  2. 去Tomcat安装目录。从catalena.sh文件夹中打开bin文件 在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"
    
  3. 执行starup.sh命令

  4. ,从bin文件夹启动服务器

答案 4 :(得分:0)

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

Java VisualVM to profile a remote server

修改: 我写了一篇关于如何通过SSH隧道设置远程分析的博客文章:

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