一,线上cpu飙升很高怎么排查?
1.通过top命令或者htop也可以看到哪些pid(进程)的cpu使用率比较高,比如pid=2266这个进程跑java服务占用百分之70的cpu.
2.如果发现当前进程pid占用较高,你就可以使用 top -p 2266 ,输出当前进程,如果想看当前进程下的线程哪个占用cpu比较高,可以使用命令 top -H -p 2266 查看. 假设 发现线程 2287占用cpu很高
3.使用printf '%x' 2287 , 如果输出是: 8ef
4. 使用 jstack 2266 > 2266.txt ,即输出到一个文件上面.
5.文件里面搜索 8ef, 例如:
6.去查找代码,例如:
,最终发现是个死循环(whlie(true))
二.线上环境的JVM都设置多大?
三.线上Java服务器内存飙升是怎么回事?