jvm常用监控命令

1、查看java进程参数
jps -l -m -v
2、显示某个jvm参数命令
jinfo -flag PrintGCDetails 9733
在这里插入图片描述
3、不重启在线开启GC日志,日志会默认输出到/opt/tomcat8/logs/catalina.out
jinfo -flag +PrintGCDetails 9733
例:
[GC (Allocation Failure) [ParNew: 86494K->1168K(170688K), 0.0084913 secs] 169236K->83951K(426688K), 0.0087381 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
4、输出不同类型的java对象占用内存情况
jmap -histo 9773 >/opt/logs/jmap.txt

5、dump出堆内存
jmap -dump:format=b,file=/opt/logs/heap.hprof 9773

6、jstack打印线程信息
-l打印锁信息
-m打印java和native的帧丝逆袭
-F强制dump,当jstack没有响应时使用
jstack 9773 >> /opt/logs/jstack.txt

7、查看java进程的每一个线程占用CPU的情况;如果有一个线程占用CPU过高,有两种可能:
 没有内存了,Java垃圾回收线程不停地运行尝试回收内存,但是每次无法收回
top -Hp 9773
在这里插入图片描述
8、sysstat安装
yum -y install sysstat
pidstat -p 9773 1 3 -u -t
-p后面跟进程号
-u表示要查看cpu的情况
1代表每隔1秒钟
3采样3次
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190627173351145.png
这个命令也可以输出占用CPU较高的线程,实际用top -Hp也够用了
在这里插入图片描述
10、在线10进制转换成16进制线程号
http://tool.oschina.net/hexconvert/

11、用jstack输出线程信息
在这里插入图片描述
jstack 14099 > /opt/logs/tid.txt
这里14099是进程号在这里插入图片描述
可以看出来这里搜索引擎lucene占用很高的CPU

发布了7 篇原创文章 · 获赞 1 · 访问量 2807

猜你喜欢

转载自blog.csdn.net/wangxq0224/article/details/93882274