Jvisualvm监控本地、远程Java进程
监控本地Java进程
在命令行输入jvisualvm即可启动jvisualvm
双击某个进程即可打开
监控远端Java进程
Jvisualvm不仅是可以监控本地jvm进程,还可以监控远程的jvm进程,需要借助于JMX技术实现。
这里以jvisualvm监控远端Tomcat的Java进程为例
JMX
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
创建配置文件
在tomcat/conf文件目录中创建两个文件jmxremote.access和jmxremote.password
jmxremote.password文件用于配置账号、密码
touch jmxremote.password 账号 密码 guest guest manager manager
jmxremote.access文件用于配置账号权限
touch jmxremote.access 用户 权限 guest readonly manager readwrite
授予权限
chmod 600 jmx*
开启远程监控
要想让服务器上的tomcat被连接,需要改catalina.sh文件
注意:最好一个参数一行的配置
# ----- Execute The Requested Command ----------------------------------------- CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote" CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=112.74.96.150" CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=8085" CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.rmi.port=8086" CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false" CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=true" CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access" CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password"
参数说明
server.hostname:ip jmxremote.port:开启jmx的端口,JMX远程连接端口 rmi.port: 通信端口,默认随机 jmxremote.ssl:是否开启ssl(false/true) jmxremote.authenticate:是否开启鉴权功能,账号密码远程监控(false/true) jmxremote.password.file:密码文件路径 jmxremote.access.file:权限文件路径
注意:云服务器一定要注意RMI端口的设置,否则无法远程连接 ! ! !
启动Tomcat
进入bin目录,启动tomcat
./startup.sh
查看tomcat启动日志
tail -f ../logs/catalina.out
查看tomcat端口监听
[root@administrator bin]# lsof -i tcp:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 18876 root 63u IPv6 758429 0t0 TCP *:webcache (LISTEN)
查看8085监听情况
[root@administrator bin]# lsof -i:8085 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 18876 root 21u IPv6 757493 0t0 TCP *:8085 (LISTEN) [root@administrator bin]# netstat -antup | grep 18876 tcp6 0 0 :::8080 :::* LISTEN 18876/java tcp6 0 0 :::8085 :::* LISTEN 18876/java tcp6 0 0 :::8086 :::* LISTEN 18876/java tcp6 0 0 :::43805 :::* LISTEN 18876/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 18876/java tcp6 0 0 172.22.4.21:8086 116.169.4.136:52959 ESTABLISHED 18876/java tcp6 0 101 172.22.4.21:8086 116.169.4.136:1957 ESTABLISHED 18876/java
创建连接
在jvisualvm中选中远程,右击添加,主机名上写服务器的ip地址,然后点击确定
右击该主机IP,添加JMX,也就是通过JMX技术具体监控远端服务器哪个Java进程
在JMX中输入如下信息
端口:8085 用户名:manager 密码:manager 勾选不要求SSL连接
连接成功
