• 线上问题定位--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%问题都可以定位到,欢迎大家留言交流。

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

  • 相关阅读:
    Flink 双流合并之connect Demo2
    Flink 双流合并之connect Demo1
    Flink 双流合并Join
    Flink状态保存CheckPoint
    Flink状态之OperatorState
    Flink状态之AggregateState
    Flink状态之ReduceState
    Flink状态之MapState
    Flink状态之KeyedListState
    大数据框架环境安装与配置01--服务器基本设置
  • 原文地址:https://www.cnblogs.com/zhouqinxiong/p/10360007.html
Copyright © 2020-2023  润新知