死锁问题(jstack)
1、top命令观察,内存不断增长,CPU占用率居高不下,获取进程号PID
2、top -Hp 观察进程中的线程,哪个线程CPU和内存占比高,获取线程号PID
3、jps也可以定位java进程号。jstack 进程号,观察线程情况jstack日志。重点看线程状态WAITING,BLOCKED的线程
waiting on <0x0000000088ca3310> (a java.lang.Object)
例如这样的线程,在等待锁释放。翻阅jstack日志,找到哪个线程持有锁。一般这个线程为Runnable,一直不释放锁频繁GC,甚至导致OOM问题(jmap)
1、jinfo pid进程号 查看jvm相关信息
2、jstat -gc pid time,每time(单位秒),刷新一次,查看GC情况
测试环境压测使用图形化界面:JDK自带的jconsole,jvisualVM。好用的jprofiler,收费!
生产环境通过命令操作
3、jmap -histo pid | head -20,查看有多少对象产生
当某一个对象实例非常多时,就是问题产生的地方,查看相关代码
执行jmap的堆转储文件会造成服务器卡顿!!
1、-XX:+HeapDumpOnOutOfMemoryError OOM问题产生,堆转储文件。
2、搞HA高可用
3、为何要转文件,线上处理吧
jvm cpu memory告警
最新推荐文章于 2022-10-12 08:00:17 发布