jconsole和jvisualvm监控tomcat配置
Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的服务器内存很小,甚至可以说几乎不消耗,不失为一款好工具,Jconsole是一个基于JMX(java管理扩展)的GUI(图形)工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动,jconsole是java性能分析器
环境说明
服务器端:Linux(Centos6.4 + jdk1.6.0 + tomcat 7)
客户端: Windows7 + jdk1.6.0
Jconsole监控步骤
1、配置tomcat的访问用户名和密码
从linux系统中jdk的安装目录中拷贝一份修改,主要是增加用户和密码,并放入测试的tomcat的conf目录下
a、进入tomcat目录:/usr/local/tomcat1/conf
b、拷贝jdk的jmxremote.password.template到tomcat下,并命名为jmxremote.password,在tomcat的conf目录下执行:
cp/usr/java/jdk1.7.0_79/jre/lib/management/jmxremote.password.template jmxremote.password,如下图:
c、修改权限chmod 700 jmxremote.password,如下图
d、增加用户信息(文档末尾增加自己的用户名密码)
vi jmxremote.password
用户名是controlRole
密码是123456
保存并退出
2、配置tomcat的访问权限
从linux系统中jdk的安装目录中拷贝一份修改,并添新增用户(jmxremote.password中新增的用户)的权限
a、拷贝jdk的jmxremote.access文件到tomcat的conf下,在tomcat的conf目录下执行:
cp/usr/java/jdk1.6.0_45/jre/lib/management/jmxremote.access jmxremote.accessm,如下图:
b、修改文件权限:chmod 700 jmxremote.access,如下图:
c、修改用户的访问权限
vi jmxremote.access
注释掉monitorRole readonly(已经注释的就不用注释了)
注释掉controlRole readwrite(已经注释的就不用注释了)
添加新用户的权限:controlRole readwrite,如下图:
3、配置tomcat信息
修改配置信息: vi /usr/local/tomcat1/bin/catalina.sh
然后找到下面这句话
# ----- Execute The Requested Command --------------------------------
在这句话的上面添加配置信息
# ----- JMX Config Start -----
JAVA_OPTS="$JAVA_OPTS
-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.2.199 -Dcom.sun.management.jmxremote.port=8111 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.access.file=/usr/local/tomcat1/conf/jmxremote.access -Dcom.sun.management.jmxremote.password.file=/usr/local/tomcat1/conf/jmxremote.password"
export JAVA_OPTS
# ----- JMX Config End -----
保存一下,然后启动tomcat
参数意义依次是:
-Dcom.sun.management.jmxremote # 启用JMX远程监控
-Djava.rmi.server.hostname=192.168.2.199 # 引入虚机IP,之前试了多次都是因为没放IP导致配置失败
-Dcom.sun.management.jmxremote.port=8111 # 使用端口8111(可随意指定只要不冲突)
-Dcom.sun.management.jmxremote.authenticate=true # 远程连接需要密码认证
-Dcom.sun.management.jmxremote.ssl=false # 不使用SSL(SSL我试了多次都没有配置成功:P 暂时不开启)
-Dcom.sun.management.jmxremote.access.file=/usr/local/tomcat1/conf/jmxremote.access # 使用指定的JMX帐号授权文件
-Dcom.sun.management.jmxremote.password.file=/usr/local/tomcat1/conf/jmxremote.password # 使用指定的JMX帐号文件
4、启动物理机测试
在物理机的运行窗口输入jconsole,回车,输入虚拟机ip,catalina.sh中设置的端口号,jmxremote.password中的用户名、密码
安装配置问题总结
a、启动tomcat报错
解决方案:
执行hostname -i 命令,如果显示的是127.0.0.1,则需要修改/etc/hosts文件,否则jconsole无法连接,原因是服务器端解释机器名的问题
vi /etc/hosts,修改如下:
红框里是服务器IP和主机名
b、端口被占用
修改端口使不冲突:-Dcom.sun.management.jmxremote.port=8111
c、虚机的防火墙和物理机的防火墙都要关闭
d、要以管理员身份运行
ps:正常情况下,应该不会遇到a和b这两种情况
监控分析
1、分析内存,gc
通过对不同堆内存的选择,可以查看出内存使用情况,以及GC回收情况,分析是否存在瓶颈
2、分析线程
选择线程可以在右端看到线程的状态、阻塞、堆栈调用,以及图表中线程峰值、活动线程数
3、分析类加载情况
可看出类加载总数、当前加载数
4、修改MBean(可管理资源)属性值
可通过资源图来修改合适的对象资源属性
jvisualvm监视远程的linux服务器上的tomcat
1、配置tomcat信息
同jconsole监控配置一样
2、Jvisualvm开启
在运行目录中输入jvisualvm,回车,或者在jdk的bin目录下双击jvisualvm.exe(以管理员身份运行最好)
3、登录Jvisualvm
a、添加远程主机:输入远程主机的ip即可
b、在a中添加的远程主机下添加JMX连接:输入远程主机的ip、端口及用户名密码,如下图:
4、监控