java应用程序线上cpu高排查

普通linux服务器定位过程:

  1. 服务器内部执行 top 命令查看,定位到占用CPU高的进程ID
  2. 使用 top -Hp <PID> 定位到占用CPU高的线程 THREADID。
  3. 使用 jstack <THREADID> > jstack.txt 将线程栈打印输出
  4. 将占用CPU高的线程ID使用 printf '%x\n' <线程ID> 命令将线程ID转换为十六进制形式
  • 假设线程ID为133,则得到十六进制85。在jstack.txt文件中定位到 nid=0x85的位置,该位置即为占用CPU高线程的执行栈信息
  1. 进行问题定位并解决

k8s pod、普通服务器定位过程:

  1. 运行arthas jar应用服务
  2. 常用命令:dashboard、thread -n 5
  3. thead -n 5 基本能定位到线程栈信息了
  4. 进行问题定位并解决
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容