使用visualVM 1.3.8(visualvm_138-ml.zip) 监控远程Tomcat运行情况

服务端CentOS6.4 x64安装的是jdk1.7 下载visualVM1.3.8-ml 也就是多语言版本,包含中文,界面用起来方便。官方下载地址比较慢,百度上搜索的都是csdn,51cto等必须登录才能下载的地址,我把我下载的visualvm_138-ml.zip 传上来,我也是在美帝的服务器上下载后,又从美帝的服务器上拖到本地的,比官方地址快多了。

visualVM1.3.8-ml下载地址(失效请告诉我):http://pan.baidu.com/s/1i59AiHJ

下载后,在远程服务器进行操作:

0x00环境检查(此部分转载自<我实在是比较懒>:http://josh-persistence.iteye.com/blog/2233459 有部分修改):

a、在服务器上配置jstatd的securitypolicy文件

jstatd是一个监控 JVM 从创建到销毁过程中资源占用情况并提供远程监控接口的 RMI ( Remote Method Invocation ,远程方法调用)服务器程序,它是一个 Daemon 程序,要保证远程监控软件连接到本地的话需要 jstatd 始终保持运行。  jstatd运行需要通过 -J-Djava.security.policy=*** 指定安全策略,因此我们需要在服务器上建立一个指定安全策略的文件jstatd.all.policy ,文件内容如下(备注:我是放在了自定义的目录下):

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

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

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

c. 运行 jstatd 守护程序

由于 jstatd 需要保持一直运行,所以建议使用 screen 命令执行 jstatd 程序,命令如下:
nohup  jstatd -J-Djava.security.policy=jstatd.all.policy   &>/home/dz/jstatd.log &

运行完毕查一下进程在不在:

ps -ef | grep jstatd

返回:

root 11679 1736 0 14:07 pts/1 00:00:12 jstatd -J-Djava.security.policy=jstatd.all.policy
root 12310 1736 0 14:32 pts/1 00:00:00 grep jstatd

说明已经成功的以守护进程(daemon)方式运行。

d.打开windows上的visualvm

添加远程服务器,输入IP地址即可(可能需要打开防火墙的端口)。

0x02 修改tomcat配置

a.修改catalina.sh

在osspecific前加上jvm参数(注意,port是每个应用程序均不同):

JAVA_OPTS="-Xms8192m -Xmx8192m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:-UseGCOverheadLimit -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

0x03 查看jmx

默认VisualVM打开的Tomcat监控信息是没有CPU的使用情况的,需要在服务器上右键,添加JMX,然后输入上面配置的每个Tomcat的端口号即可。

Enjoy~~~~

上一篇:C# static的用法详解


下一篇:Android中Listview点击item不变颜色以及设置listselector 无效