转载:JProfiler远程监控LINUX上的Tomcat过程细讲

来源于xuwanbest的博客

所谓“工欲善其事,必先利其器”,好的工具确能起到事半工倍的作用。我用到的最多的就两个JConsole 和JProfiler 。JConsole监控系统内存变化情况,如果有内存溢出的话,垃圾回收将会呈现锯齿状。发现问题以后,使用JProfiler,在小压力(或无压力)的情况下监控对象变化,定位内存溢出原因。

JProfiler是一款Java的性能监控工具。可以查看当前应用的对象、对象引用、内存、CPU使用情况、线程、线程运行情况(阻塞、等待等),同时可以查找应用内存使用得热点,即:哪个对象占用的内存比较多;或者CPU热点,即:哪儿方法占用的较大得CPU资源。我使用的是4.3.2版本,以前试用过3**版本,不过那个bug比较多,容易死,4**版本稳定多了。

有了上面那些信息对于系统的调优会有很大帮助。这里提供有几篇文章供参考:获取、介绍,简单入门,使用JProfiler解决实际问题。这几篇文章基本介绍了常见东西了,下面说点心得。

1. JProfiler监控是要消耗系统资源的,所以一般情况下不要用于性能测试时候的监控。

2. 如果要用于相对大压力情况下,可以有选择的打开监控项,不用所有都打开。主要有两个,一个是内存监控,打开的情况下可以查找内存分配热点。一个是CPU监控,打开的情况下可以查看CPU使用热点。

如图所示,红笔标注部分。如果两个都关闭的话,还是可以跑一定压力的,同时还可以监控对象数量。

1. 个人认为最好用的(也是用的最多的)是查询当前的对象的数量。数量监控很重要,如果你使用了单例,那么你只会看到有一个对象存在,如果多了就说明程序有问题了。同样,如果应用进行一系列操作,检查一下该销毁的对象是否还继续存在,如果没有释放,就得考虑是否存在内存溢出了。

2. JProfiler还提供了一个比较好的检查内存溢出得工具。他可以查找某个对象的引用情况,即:当你发现某个该释放掉的对象没有释放,就可以看一下哪个实例在引用它,找到了根即找到了溢出点。

3. 具体操作如下:在 “Memory Views”界面中右键选择你要监控的对象,选择第一项“Take Heap Snapshot for Selection”,选择完成后会进入“Heap Walker”界面,界面下面提供几个功能,选择“References”即可 。如图:

4. JProfiler提供不同的观察粒度,提供对类的监控、对包的监控、对J2EE组件的监控,同时过滤器也比较好用,直接定位你关注的包或类即可。

5. JProfiler的监控可能与应用之间存在一定时间差,所以有些时候需要等待刷新,才能显示正确系统情况。

Windows客户端的JProfiler远程监控Linux上的Tomcat

1.测试环境

服务器:RedHat Linux 3.4.3-9.EL4(内核版本 2.6.9-5.EL),Tomcat5.5.20,Sun JDK 1.5.0_09,JProfiler 4.3.2 for linux(安装包:jprofiler_linux_4_3_2.sh)

客户端:Windows XP,JProfiler 4.3.2 for windows(安装包:jprofiler_windows_4_3_2.exe)

2.JProfiler软件下载地址 http://www.ej-technologies.com/

3.客户端 JProfiler 安装 略

4.服务器端 JProfiler 安装:

把 jprofiler_linux_4.3.2.sh 上传到到服务器,假设路径为 /opt/jprofiler

1. # cd /opt/jprofiler

2. # chmod +x *.sh

3. # ./jprofiler_linux_4.3.2.sh -c

按照提示来安装,提示都很简单,不在多说。安装路径选择 /opt/jprofiler4

注意,这里的 -c 意思是用字符方式来安装,如果机器上没有 X 则加上该参数.

5.客户端连接配置

1). 运行 JProfiler 。第一次打开会有向导,忽略它。

2). 选择 Session->Integration Wizard->New Remote Integratation

3). 选择 On a remote computer;Platform of remote computer 选择 Linux x86/AMD 64;Next

4). 输入服务器 IP ;Next

5). 输入服务器上的 jprofiler 的安装路径,如 /opt/jprofiler4 ;next

6). 选择服务器的 JDK 环境,这里是:Sun,1.5.0,hotspot;next

7). 输入端口:这里是默认值 8849;next

8). 选择启动模式:这里选第一种 wait for a connection from the jprofiler GUI;next

9). 这里会列出需要在服务器端做的配置:

1. Integration type: [Generic application]

2. Selected JVM: Sun 1.5.0 (hotspot)

3. Startup mode: Wait for JProfiler GUI

(1) Please insert

-agentlib:jprofilerti=port=8849 -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar

into the start command of your remote application right
after the java command.

(2) Please add

/opt/jprofiler4/bin/linux-x86

to the environment variable LD_LIBRARY_PATH.

A remote session named Remote application on 192.168.40.15 will be
created that connects to a running instance of the

remote application that is started with the modified start
command.

6.服务器端的配置

(1)修改系统环境配置文件 /etc/profile ,增加

1.
JPROFILER_HOME=/opt/jprofiler4/bin/linux-x86

2.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JPROFILER_HOME

(2)修改TOMCAT启动文件catalina.sh,添加-agentlib:jprofilerti=port=8849
-Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar 内容到CATALINA_OPTS中;

“-agentlib:jprofilerti=port=8849
-Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar ” 此内容由客户端软件生成

CATALINA_OPTS="$CATALINA_OPTS -Xms128m -Xmx128m $JPDA_OPTS
-agentlib:jprofilerti=port=8849
-Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar"

7.Reboot Linux and startup Tomcat using startup.sh;

The log of tomcat which is $CATALINA_HOME/logs/catalina.out will
show:

1.
JProfiler> Protocol version 23

2.
JProfiler> Using JVMTI

3.
JProfiler> 32-bit library

4.
JProfiler> Listening on port: 8849.

5.
JProfiler> Native library initialized

6.
JProfiler> Waiting for a connection from the JProfiler GUI

8.启动客户端软件

点击jprofiler菜单 session>start center>Open
Session

Available session
configurations中列出了刚才配置的连接,选中使用就OK了!!

9.The log of tomcat which is $CATALINA_HOME/logs/catalina.out
will show:

1.
JProfiler> Using dynamic instrumentation

2.
JProfiler> Time measurement: elapsed time

3.
JProfiler> CPU profiling enabled

4.
JProfiler> Hotspot compiler enabled

5.
JProfiler> Starting org/apache/catalina/startup/Bootstrap

10.当中断JProfiler连接时

The log of tomcat which is $CATALINA_HOME/logs/catalina.out will
show:

1.
JProfiler> Disconnected. Waiting for reconnection.

2.
JProfiler> Listening on port: 8849.

时间: 2024-12-26 20:53:46

转载:JProfiler远程监控LINUX上的Tomcat过程细讲的相关文章

Windows客户端的JProfiler远程监控Linux上的Tomcat

1.测试环境 服务器:RedHat Linux 3.4.3-9.EL4(内核版本 2.6.9-5.EL),Tomcat5.5.20,Sun JDK 1.5.0_09,JProfiler 4.3.2 for linux(安装包:jprofiler_linux_4_3_2.sh) 客户端:Windows XP,JProfiler 4.3.2 for windows(安装包:jprofiler_windows_4_3_2.exe) 2.JProfiler软件下载地址 http://www.ej-tec

[转帖]JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!)

JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!) https://www.cnblogs.com/yjd_hycf_space/p/7727757.html 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/12115262.html

jvisualvm 远程监控Linux下的tomcat

前一段测试系统崩溃过一回,所以想远程监控一下jvm的运行情况,我在网上也找了不少文章和办法,试了好几次都没成功,今天算试成功了,但是不太 完美,因为需要将Linux的防火墙关掉才可以连接,我尝试将连接的端口号加到iptables中,重启防火墙,也不行.所以先记录下来,以后再看看是什 么问题. 1.linux下tomcat安装目录下的bin文件夹中的catalina.sh 端口号:1099,Linux主机IP: 192.168.193.129 检查host是否是127.0.0.1 , 执行命令 h

[转帖]Jprofiler远程连接linux项目监控

Jprofiler远程连接linux项目监控 https://blog.csdn.net/junzhen_chen/article/details/72911427 原创junzhen_chen 发布于2017-06-08 11:12:18 阅读数 2460 收藏展开 1     1.本地系统下安装windows版Jprofiler1.1     版本:jprofiler_windows-x64_9_1_1.exe1.2     操作:打开安装.exe文件,根据安装向导一路next完成安装1.3

使用visualvm远程监控LINUX服务器JVM

使用visualvm远程监控LINUX服务器JVM 一.JMX方式: 1. 首先要修改JDK中JMX服务的配置文件,以获得相应的权限: 进入$JAVA_HOME所在的根目录的/jre/lib/management子目录下, a. 将jmxremote.password.template文件复制为jmxremote.password b. 调整jmxremote.access和jmxremote.password的权限为只读写,可以使用如下命令 chmod 600 jmxremote.access

Windows远程调试Linux上的C++程序:Eclipse+MingW+Samba+GDBserver

转自:http://www.heimizhou.com/windows-remote-debug-linux-c-plus-plus.html 最近有一个需求,就是需要在Windows上远程调试Linux上的C++程序,然后我就从网上搜集各种方法,但是发现很多方法中是先在Windows上编译程序,然后再从Linux上编译程序,最后进行远程调试,这种方法使我的调试不能进入源代码,后来经过尝试发现只需要在Linux上编译程序即可.下面从三个方面:需要安装的软件.安装与配置.配置远程调试,来介绍一下我

使用Windows上的Eclipse 远程调试 linux下的Tomcat

1:修改Linux上Tomcat的catalina.sh,第一行添加declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9528" 2:在eclipse中, 点 "Run->Debug...",选 "Remote Java Application",按提示新建,"Project"一项选择需要调

Windows 远程在Linux下 发布tomcat web程序

Linux虚拟机太卡了,但是我要在Linux下调试程序啊.干脆使用ssh远程登录到我的Linux下,就可以在windows下修改程序,只是发布的时候,发布到linux上就可以了. 一.Linux安装ssh sudo apt-get install ssh 使用securecrt远程登录到Linux 二.linux安装sz.rz sudo apt-get install lrzsz sz---从服务器拿文件   rz--向服务器传文件 三.本地发布出war包,上传到Linux tomcat目录 四

linux 上部署tomcat的java web项目,会出现post提交request.request.getParameter()的得不到值的情况

有时候明明在windows上非常的正常,而在linux上就不正常了,在windows上post提交request.request.getParameter()有值,而在liunx上没有值. 我开始以为是我的tomcat版本,发现其实不是,tomcat在linux和windows上基本是相同的. 这样我就怀疑是不是我的配置文件错误,在tomcat下的conf的server.xml文件配置错误.就决定去找这个文件,我就抱着试一试的心态了一个地方 <Connector port="80"