zoukankan      html  css  js  c++  java
  • 线上问题定位--CPU100%

    服务器CPU突然告警,如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载?

    步骤一、找到最耗CPU的进程

    工具:top

    方法:

    • 执行top -d 1 -c,每秒刷新一次,显示进程运行信息列表

    • 键入P (大写p),进程按照CPU使用率排序

    图示:

    如上图,最耗CPU的进程PID为1802

    步骤二:找到最耗CPU的线程

    工具:top

    方法:

    • top -d 1 -Hp 1802,显示一个进程的线程运行信息列表

    • 键入P (大写p),线程按照CPU使用率排序

    图示:

    如上图,进程1802内,最耗CPU的线程PID为1826

    步骤三:将线程PID转化为16进制

    工具:计算器

    之所以要转化为16进制,是因为堆栈里,线程id是用16进制表示的。

    步骤四:查看堆栈,找到线程在干嘛

    工具:jstack/grep

    方法:jstack 1802 | grep ‘722’ -C5

    • 打印进程堆栈

    • 通过线程id,过滤得到线程堆栈

    图示:

    如上图,找到了耗CPU高的线程对应的线程名称“http-nio-10287-exec-10”,以及看到了该线程正在执行代码的堆栈。

    按照这几个步骤,大多数的CPU 100%问题都可以定位到,欢迎大家留言交流。

    喜欢请微信扫描下面二维码,关注我公众号--“扯一扯技术”,做一些实战项目中的问题和解决方案分享。

  • 相关阅读:
    常量
    html5+css3 background-clip 技巧
    AJAX小结
    使用jquery来完成AJAX操作
    linux命令 cp 递归复制 带权限复制
    html标记语言 --超链接
    html标记语言 --图像标记
    html标记语言 --文本标记
    [转]linux如何修改文件或目录的权限(chmod)
    html标记语言 --格式标记
  • 原文地址:https://www.cnblogs.com/zhouqinxiong/p/10360007.html
Copyright © 2011-2022 走看看