java jvm监控_JVM 监控工具 jstack 和 jvisualvm 的使用

Java线程状态

线程的五种状态

* 新建:new(时间很短)

* 运行:runnable

* 等待:waitting(无限期等待),timed waitting(限期等待)

* 阻塞:blocked

* 结束:terminated(时间很短)

14eb7e6dd196b1729b87065e6ed22f27.png

Jvm监控工具

一、jstack

介绍:

jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息。

如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:jstack [-l] pid

如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。

另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

使用:

1、查看运行程序的进程号

97d4aac13315dfb30216e3eb8ffe008d.png

2、jstack dump当前线程状态

195d6fa783f476fd34a5ce9ccb5ce342.png

3、根据当前抓取到的信息进行进一步的分析

二、jvisualvm远程监控tomcat

1、在 $CATALINA_HOME/bin/startup.sh 倒数第二行(也就是exec "$PRGDIR"/"$EXECUTABLE" start "$@"一行上边)加上如下内容:

48304ba5e6f9fe08f3fa1abda7d326ab.png

export CATALINA_OPTS="$CATALINA_OPTS

-Dcom.sun.management.jmxremote

-Djava.rmi.server.hostname=192.168.1.130

-Dcom.sun.management.jmxremote.port=7003

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=true

-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password

-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"

48304ba5e6f9fe08f3fa1abda7d326ab.png

各个参数的说明如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

-Dcom.sun.management.jmxremote 启用JMX远程监控

-Djava.rmi.server.hostname=192.168.1.130 这是连接你的tomcat服务器地址

-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=../conf/jmxremote.password 指定连接的用户名和密码配置文件

-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access 指定连接的用户所拥有权限的配置文件

48304ba5e6f9fe08f3fa1abda7d326ab.png

2、在$CATALINA_HOME/conf/jmxremote.access里添加可以连接监控的用户名以及权限:

monitorRole readonly

controlRole readwrite

3、在$CATALINA_HOME/conf/jmxremote.password 里添加可以连接监控的用户名以及密码,用户的权限在jmxremote.access里以及配置了:

monitorRole 111111

controlRole 222222

4、修改jmxremote.access和jmxremote.password的权限:

sudo chmod 600 jmx*

5、重启tomcat就可以了

6、在本地的$JAVA_HOME/bin下双击jvisualvm.exe打开如下图:

b5e05608f0573ec0d4af7c99a6e4e063.png

7、在远程上右击,添加主机,输入服务器的ip:

311a17c772293296e05cc9543fbf0a8f.png

8、在远程主机上右击,添加JMX连接,我的端口号是7003,确定:

ecc1ee4478df77128acfa87d637901c1.png

9、这是会提示输入用户名和密码,也就是你在jmxremote.password里设置的用户名和密码:

609eb2ba178e5519849ac3c42ae1c46b.png

10、输入正确的用户名和密码后,链接进去打开连接将会看到如下画面:

a95e04e55cc5e3a0bba6f6ebdd368e00.png

这时就可以查看服务器的资源情况、以及tomcat的线程情况等。

-END-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值