Linux服务器负载过高问题排查思路
  • 一.查看系统负载情况

      [root@ops-lcc-alihk-003 ~]# uptime
      11:10:33 up 127 days, 20:38,  4 users,  load average: 0.00, 0.01, 0.05
    

    理解结果显示含义:

    11:10:33 # 当前时间
    up 127 days, 20:38 # 系统运行时间
    4 users # 当前在线用户数
    load average: 0.00, 0.01, 0.05 # 1分钟、5分钟、15分钟(Load Average)

    理解什么是Load Average?

    Load Average是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数
    (也就是平均活跃进程数)它和cpu使用率并没有直接关系。
    --可运行状态:是指正在使用CPU或者正在等待CPU的进程。
    --不可中断状态:是指正处于内核态关键流程中的进程,这些流程是不可打断的。

    不可中断状态例子:

    一个进程向磁盘写数据时,为了保持数据一致性,在得到磁盘回复前,
    它是不能被其他进程或者中断打断的,此时就叫不可中断状态。如此时进程被打断,则容易
    出现磁盘数据和进程不一致的问题。实际上是一种系统对进程和硬件的保护机制。

    当平均负载高于CPU数量70%的时候,需要排查分析过高原因。负载过高,可能会导致进
    程响应变慢,进而影响服务的正常功能。

    案例分析工具:

    stress # 压力测试工具

     sysstat # 监控和分析系统性能。包含有mpstst pidstat两个命令。
     mpstat # 实时查看每个cpu的性能指标,以及所有cpu的平均指标。
     pidstat # 实时查看进程的cpu、memory、io以及上下文切换等性能指标。
    

    分析案例(cpu核心数1)

    stress --cpu 1 --timeout 10s # 模拟把cpu打满,如果超载情况模拟可以设置 --cpu 2
    watch -d uptime # 监测系统负载变化 mpstat -P -AA 5 1 # 查看cpu使用率的变化,并且间隔5s输出一组数据 pidstat -u 5 1 # 查看是哪个进程导致io or cpu过高,5s输出一组数据 -u 表示cpu指标。

Copyright © zhangluya.com 2019            UPDATE 2020-03-26 15:42:33

results matching ""

    No results matching ""