jvisualvm远程监控Tomcat_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > jvisualvm远程监控Tomcat

jvisualvm远程监控Tomcat

 2014/4/1 18:15:28  zxc3375  程序员俱乐部  我要评论(0)
  • 摘要:一.JavaVisualVM概述对于使用命令行远程监控jvm太麻烦。在jdk1.6中Oracle提供了一个新的可视化的。JVM监控工具JavaVisualVM。jvisualvm.exe在JDK的bin目录下。双击启动JavaVisualVM后可以看到窗口左侧“应用程序”栏中有“本地”、“远程”、“快照”三个项目。“本地”下显示的是在localhost运行的Java程序的资源占用情况,如果本地有Java程序在运行的话启动JavaVisualVM即可看到相应的程序名
  • 标签:Visua Visual Tomcat 远程

?

一.Java VisualVM 概述

?

class="p0" style="margin-top: 0pt; margin-bottom: 0pt;">? 对于使用命令行远程监控jvm?太麻烦??在jdk1.6?中?Oracle?提供了一个新的可视化的。?JVM?监控工具?Java?VisualVM?jvisualvm.exe?JDK?的?bin?目录下。

?

???双击启动?Java?VisualVM?后可以看到窗口左侧?“应用程序?”栏中有“?本地?”、“远程?”?、“快照?”三个项目。

?

??“本地?”下显示的是在?localhost?运行的?Java?程序的资源占用情况,如果本地有?Java?程序在运行的话启动?Java?VisualVM?即可看到相应的程序名,点击程序名打开相应的资源监控菜单,以图形的形式列出程序所占用的?CPU?、?Heap?、?PermGen?、类、线程的?统计信息。

?

??“远程”?项下列出的远程主机上的?Java?程序的资源占用情况,但需要在远程主机上运行?jstatd?守护程序

?

?

VisualVM分为?3?类,?本地?它会自动侦测到,并显示出来

?

双击Local?下的任一节点,看到右边的变化?,你可以监控?CPU?内存,类,线程等运行状况,实时监控服务器性能。

?

?

?右键?VisualVM我们可以看到?Thread?Dump,?Heap?Dump

?做?Thread?Dump?很快,马上就可以看到结果

?

?

Heap?Dump要稍花费一些时间(可以看到当前?heap?里对象的数量及占用的比例,做?OOM?很好用)

?

?

?

对其功能不再做描述,可以查阅网上相关质量,我们主要讲的是如何使用?VisualVM?远程监控。

?

二.使用visualvm 远程监控 JVM??

1.?测试环境

Ubuntu?Server?10.01

?

2.??在服务器上安装?jstatd?组件

使用apt-get?命令安装?openjdk?即可?:

?

Java代码??收藏代码
  1. sudo?apt-get?install?openjdk-6-jdk??

?

3.?在服务器上配置?jstatd?的?security?policy?文件

?

?? jstatd是一个监控?JVM?从创建到销毁过程中资源占用情况并提供远程监控接口的?RMI?(?Remote?Method?Invocation?,远程方法调用)服务器程序,它是一个?Daemon?程序,要保证远程监控软件连接到本地的话需要?jstatd?始终保持运行。?

?? jstatd运行需要通过?-J-Djava.security.policy=***?指定安全策略,因此我们需要在服务器上建立一个指定安全策略的文件jstatd.all.policy?,文件内容如下:

?

Java代码??收藏代码
  1. grant?codebase?"file:${java.home}/../lib/tools.jar"?{??
  2. ???permission?java.security.AllPermission;??
  3. };??

?

?

4.?修改服务器?hosts?文件中的?IP?地址

?

?

?? 要使Java?VisualVM?成功连接到远程服务器上,服务器端应该在?/etc/hosts?文件中把本机地址设为本机的?IP?地址。使用?hostname?-i?命令查看,如果显示的是?127.0.0.1?或者与本机实际?IP?不一致的话,需要把?/etc/hosts?文件中相应的地址改为本机实际?IP?。

?

5.?运行?jstatd?守护程序

?

?

? 由于?jstatd?需要保持一直运行,所以建议使用?screen?命令执行?jstatd?程序,命令如下:

Java代码??收藏代码
  1. screen?jstatd?-J-Djava.security.policy=jstatd.all.policy??

?

如果需要RMI?日志功能的话,还可以在启动参数中加入?-J-Djava.rmi.server.logCalls=true?。

Java代码??收藏代码
  1. screen?jstatd?-J-Djava.security.policy=jstatd.all.policy?-J-Djava.rmi.server.logCalls=true??

?

?

jstatd开始运行后,使用?CTRL+A+D?断开?screen?界面,回到?shell?界面。如果想切换回?jstatd?运行界面的话,使用?screen?-r?-d命令即可。

?

6.?通过Java?VisualVM?连接到服务器监控?Java?程序

?? 在Java?VisualVM?程序窗口左侧?“?远程?”?项目右键选择?“?添加远程主机?”?,在弹出的对话框中输入远程主机的?IP?地址,确认提交后即可看到相应的远程主机和在上面运行的?Java?程序,连接成功后应该会显示?Jstatd?及其?PID?。

?

?

? 通过以上方式连接服务器发现一个问题,不能监控CPU?。提示我们建立?JMX?,建立?JMX?提示要求端口号。(?JMX:Java?Management?Extensions?,即?Java?管理扩展?,?是一个为应用程序、设备、系统等植入管理功能的框架。?JMX?可以跨越一系列异构操作系统平台、系统体系结构和?网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用?。而Visual?VM是通过?JMX?来和远程?Java?应用联系的?)。

?

?

7.?T?omcat中配置

? 下面我们为54?服务器的?tomcat?配置?jvm?启动参数。??tomcat?的?catalina.sh?中添加如下参数:

Java代码??收藏代码
  1. JAVA_OPTS='-Dcom.sun.management.jmxremote.port=8999?-Dcom.sun.management.jmxremote.ssl=false?-Dcom.sun.management.jmxremote.authenticate=false'???

?

或:

Java代码??收藏代码
  1. JAVA_OPTS=’-Dcom.sun.management.jmxremote.port=1099?-Dcom.sun.management.jmxremote.ssl=false?-Dcom.sun.management.jmxremote.authenticate=false?-Djava.rmi.server.hostname=192.168.1.54??其他配置’??

?

?

?

注:1.?-Dcom.sun.management.jmxremote.port?:这个是配置远程?connection?的端口号的,要确定这个端口没有被占用

2.?-Dcom.sun.management.jmxremote.ssl=false?指定了?JMX?是否启用?ssl

3.?-Dcom.sun.management.jmxremote.authenticate=false???指定了JMX?是否启用鉴权(需要用户名,密码鉴权)

?? 2,3两个是固定配置,是?JMX?的远程服务权限的

4.?-Djava.rmi.server.hostname?:这个是配置?server??IP?

?

?

连接成功,现在我们可以远程监控服务器性能,可以配合?jmeter?进行了一个长时间的加压,在加压过程中重点关注了系统资源的使用情况。

三.参考博客

http://mahuihuang.blog.163.com/blog/static/745292520113202321494/

?

http://wolfdream.iteye.com/blog/1032712

?

http://sjsky.iteye.com/blog/705323

发表评论
用户名: 匿名