利用JProfile检测Linux上Tomcat的内存泄露
公司一系统开发完成上线后,经常出现系统宕机现象。开发环境MyEclipse,框架使用SSH,数据库使用Sybase,WEB服务器Tomcat,操作系统Centos。这里使用的是JProfiler6.2,注意Linux和Windows的版本 要一致。
出现这个情况后第一反应是可以使用JProfile查看应用的内存使用状况,首先使用了Jdk自带的JConsole,然后看到系统有明显的内存泄露现象,然后开始尝试使用JProfile,当时想的是利用Window下的JProfile监控Linux上的应用,首先在Linux上安装Linux版本的JProfile,安装成功后在Tomcat的启动脚本上添加-agentpath:/opt/jprofiler/bin/linux-x86/libjprofilerti.so=port=8849。
接下来就是客户端的建立,
?这里选择New Remote Integration,
?这里选择使用远程模式,选择好使用的平台。
?选择使用的java版本
?选择等待连接
?输入要监控的应用所在服务器的IP地址
?填写web应用所在服务器,jprofiler的安装位置
?这里保持默认的监控端口8849,当然可以根据自己的需要进行设置,如果这里修改,tomcat启动参数中也要进行相应的修改。
?
到这里客户端的设置也就完成了,然后next。
?再点击finish之前,重启服务器上的tomcat,这个时候再点击finish,就可以远程监控到服务器上的tomcat了。
?
接下来 就是通过监控数据分析服务器上存在系统漏洞了。这里就不多说了。
?
JProfiler监控并修复bug获取到的数据比JConsole要详细的多,但是相应的对服务器的影响就会比较大,会导致应用的速度急剧下降。测试完成后,建议将tomcat启动脚本中添加的参数去掉。