工作需要,需要监控Tomcat堆内存使用情况
Tomcat也是Java程序,可以使用visual VM等工具远程监控运行状态
大概步骤如下
1.修改catalina.sh
在文件中增加以下代码(没有明确哪一行,最好放到第一个非注释的行前)
JAVA_OPTS='-Xms2048m -Xmx2048m -Xmn1500m -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=10.0.66.248 -Dcom.sun.management.jmxremote.port=7003 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/opt/tomcat7/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/opt/tomcat7/conf/jmxremote.access'
-Xms2048m //Tomcat最小内存
-Xmx2048m //Tomcat最大内存
-Xmn1500m //新生代内存大小,包括Eden区和两个survival区
-Dcom.sun.management.jmxremote //启用JMX
-Djava.rmi.server.hostname=10.0.66.248 //主机名,填写服务器IP即可
-Dcom.sun.management.jmxremote.port=7003 //jmx监听的端口
-Dcom.sun.management.jmxremote.ssl=false //是否使用ssl
-Dcom.sun.management.jmxremote.authenticate=true //是否启用认证
-Dcom.sun.management.jmxremote.password.file=/opt/tomcat7/conf/jmxremote.password //用户名、密码文件,如不存在,需要新建
-Dcom.sun.management.jmxremote.access.file=/opt/tomcat7/conf/jmxremote.access //用户的访问权限文件,如不存在,需要新建
2.创建jmxremote.access、jmxremote.password文件
新建jmxremote.access文件
[root@www tomcat7]# vi /opt/tomcat7/conf/jmxremote.password
内容如下
jundong 123456
guest 123456
新建jmxremote.password文件
[root@www tomcat7]# vi /opt/tomcat7/conf/jmxremote.access
内容如下
jundong readwrite
guest readonly
由于执行启动Tomcat时,会读取jmxremote.password jmxremote.access文件,同时会检查文件的权限,如果文件权限过大或者过小,Tomcat会启动失败!!!!!
修改权限
[root@www conf]# chmod 600 jmxremote.password jmxremote.access
3.启动Tomcat
[root@www bin]# ./catalina.sh start
4.使用visual VM监控
打开visual VM,Remote右键添加远程主机
输入IP
添加JMX监控
输入用户密码等
ok!可以看到监控信息了
5.添加visual GC插件监控GC过程
VisualVM连接远程服务器有两种方式:JMX和jstatd,上面介绍的是JMX,但这两种方式都不能完美支持所有功能,例如JMX不支持VisualGC,jstatd不支持CPU监控,实际使用可同时配置上并按需选用。
1.1 安装visual GC插件
1.2 **Mac 可能要修改visual VM的启动参数,Windows我试过一次不用。。。(可选)
Note: To display original Visual GC colors, start VisualVM with an extra command-line parameter: -J-Dcom.sun.tools.visualvm.modules.visualgc.originalUI=true
vi /Applications/VisualVM.app/Contents/Resources/visualvm/etc
在visualvm_default_options参数里添加参数
-J-Dcom.sun.tools.visualvm.modules.visualgc.originalUI=true
配置服务器端的jstatd服务
2.1 修改安全策略
vi $JAVA_HOME/jre/lib/security/java.policy
2.2 启动jstat服务
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=10.0.66.248
3 启动VisualVM,因为在配置JMX时已经添加过服务器节点,如果配置正确,通常VisualVM会自动检测到jstatd连接并添加节点
OK!!!