zoukankan      html  css  js  c++  java
  • 当load飙升时问题排查思路

    load:系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:

      - 它没有在等待I/O操作的结果

      - 它没有主动进入等待状态(也就是没有调用’wait’)

      - 没有被停止(例如:等待终止)

    我们可以通过系统命令uptime、w、top等查看当前load average情况

     [root@CNC-BJ-5-3N1 ~]# w

    20:01:55 up 76 days,  8:20,  6 users,  load average: 1.30, 1.48, 1.69

    • 第一位1.30:表示最近1分钟平均负载

    • 第二位1.48:表示最近5分钟平均负载

    • 第三位1.69:表示最近15分钟平均负载

    PS. linux系统是5秒钟进行一次Load采样

          load统计的是总的数据,需要每个看到的数值都除以逻辑cpu数,然后和0.7对比。重点看15分钟,也就是第三个数值。

    查看cpu

    1、查看CPU信息
    # 总核数 = 物理CPU个数 X 每颗物理CPU的核数
    # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

    # 查看物理CPU个数
    cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

    物理CPU:主板上实际插入的cpu数量

    # 查看每个物理CPU中core的个数(即核数)
    cat /proc/cpuinfo| grep "cpu cores"| uniq
    cpu核数:单块CPU上面能处理数据的芯片组的数量

    # 查看逻辑CPU的个数
    cat /proc/cpuinfo| grep "processor"| wc -l

    逻辑cpu数:一般情况下,逻辑cpu=物理CPU个数×每颗核数,如果不相等的话,则表示服务器的CPU支持超线程技术(HT:简单来说,它可使处理器中的1 颗内核如2 颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能,此时逻辑cpu=物理CPU个数×每颗核数x2)

    # 查看CPU信息(型号)
    cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

    ----------------------------------------------------------------------------------------------------------------------

    排查思路:

    1、top 查看当前cpu情况,找到占用cpu过高的进程PID,如123

    2、top -Hp123 找出占用cpu过高的线程,记录下PID 如1,2,转换成十六进制。printf "%x " 21742

    3、jstack -l 123>test.txt打印出当前进程的线程栈。

    4、查找到对应第二步两个线程运行栈,分析代码。

    实际

  • 相关阅读:
    2021牛客暑期多校训练营5
    二分图知识点温习
    Codeforces Round #735 (Div. 2)
    牛客比赛订正(3,4)
    Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) Editorial题解
    关于球的相关知识
    AtCoder Beginner Contest 210题解
    P7077 [CSP-S2020] 函数调用
    偏序问题学习笔记
    P1606 [USACO07FEB]Lilypad Pond G
  • 原文地址:https://www.cnblogs.com/danyuzhu11/p/10419190.html
Copyright © 2011-2022 走看看