线上机器cpu占用率100%问题排查

cpu

cpu占用率高,一方面可能是因为,程序是计算密集性的。比如大量的请求过来,每个请求有大量的正则计算,很计算的关联表排序。
还有代码中有死循环会导致cpu负载飙高

定位问题代码位置的步骤

  1. cpu负载高,首先会通过监控告知到我们
  2. top 指令查处cpu占用率高的进程pid
  3. ps -ef | grep pid 看出来是什么服务
  4. ps -Hp pid -o THREAD,tid,time 查看该进程下哪个线程占用率高
    这步是为了在日志中过滤,线程参数tid
  5. printf "%x\n" 转换tid为16进制(dump日志里边线程号是16进制)
  6. jstack pid | grep tid -A 30 用jvm的线程堆栈信息指令dump日志,在日志中过滤此线程id的相关日志,定位代码位置。

参考引用:http://www.blogjava.net/hankchen/archive/2012/05/09/377735.html

你可能感兴趣的:(线上机器cpu占用率100%问题排查)