使用 jvisualVM 监控 tomcat

类别:java  阅读:74  发布时间:Thu Jan 11 23:17:03 CST 2018

    最近做项目,发现有个用于代理下载图片的 tomcat 服务经常oom,决定使用 jvisualVm 监控,看看 jvm 运行时的资源使用情况。

    1. 启动 jstatd 监控服务

    先用 jstatd 监控服务器所有的 java 程序,jstatd 是一个 rmi 的 server 应用,需要在服务器上运行。

    在服务器某个目录下创建授权文件 jstatd.all.policy,编辑以下内容。

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

    然后后台启动 jstatd

jstatd -J-Djava.security.policy=jstatd.all.policy  -J-Djava.rmi.server.hostname=xxx.xx.xxx.xxx &

    配置好后,打开本地电脑的 jvisualVM,jdk 中自带有该客户端。在${JAVA_HOME}/bin/ 目录下。右键远程,输入服务器 ip 地址即可,可以看到服务器上所有正在运行的 java 程序信息。但发现监控不了 cpu 信息。要监控 cpu 信息需要配置 jmx

jvisual_1.jpg

    2. 配置 tomcat jmx

    编辑 tomcat/bin 下的 catalina.sh 文件,在 JAVA_OPTS处添加 jmx 的配置

JAVA_OPTS="
    -Dcom.sun.management.jmxremote.port=9999
    -Dcom.sun.management.jmxremote.ssl=false
    -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
    -Dcom.sun.management.jmxremote.authenticate=true
    -Dcom.sun.management.jmxremote.password.file=/usr/local/jdk/jre/lib/management/jmxremote.password
    -Dcom.sun.management.jmxremote.access.file=/usr/local/jdk/jre/lib/management/jmxremote.access
"

    此处采用密码验证方式,需要配置两个文件,password.file 文件和 access.file 可以在${JAVA_HOME}/jre/lib/management/ 下找到,password.file 中已默认配置好两个用户角色,minitorRole 和 controlRole,前者只读,后者可读可写,修改password.file即可

monitorRole xxxxxxxxxxx
controlRole xxxxxxxxxxx

    配置好后,打开 jvisualVM,右击刚刚输入的服务器配置,添加 jmx 连接,选择用 controlRole 连接,可以监控 cpu 了,还可以手动 gc 等等。 

jvisual_2.jpg

关键字:jvisualVM

© copyright 粤ICP备16108162号-1