主机load average异常

总结报告

 

1.涉及主机:

 

涉及主机:

jzjsywzcxt1-core-r-9

ip:

 

系统版本:

CentOS Linux release 7.4.1807 (Core)

内核版本:

3.10.0-693.43.1.el7.x86_64

 

2.故障描述:

 

故障描述:

  1. 业务反馈主机响应慢,经排查主机load average负载值偏高。

 

 

 

 

 

排查以及实施操作

3.1 排查系统资源

CPU

  • 排查cpu使用率正常。

    云服务器 CPU使用率过低 服务器cpu使用率很低_重启

  • IO等待和cpu空闲正常

    云服务器 CPU使用率过低 服务器cpu使用率很低_网络连接_02

  • 内存

    物理内存较为紧张,可利用内存充裕。不影响load average

    云服务器 CPU使用率过低 服务器cpu使用率很低_云服务器 CPU使用率过低_03

  • 磁盘

    因为业务使用的是NFS挂载卷,存储反馈nfs侧读写正常

    本地磁盘IO读写正常

    云服务器 CPU使用率过低 服务器cpu使用率很低_重启_04

  •  

    以上排查结果均无太大问题,思路转到进程上

    进程

    经检查,发现进程名为ftpTrans的数量很多,且状态为D状态,

    反馈此进程为业务相关进程。

    云服务器 CPU使用率过低 服务器cpu使用率很低_网络连接_05

  •  

     

     

     

     

     

    在继续排查之前先了解其相关知识

    Load average描述

    Load average的定义

    系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:

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

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

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

     

    Linux上的 load average 除了包括正在使用CPU的进程数量和正在等待 CPU 的进程数量之外,还包括 uninterruptible sleep 的进程数量。通常等待 IO 设备、等待网络的时候,进程会处于 uninterruptible sleep 状态。Linux 设计者的逻辑是,uninterruptible sleep 应该都是很短暂的,很快就会恢复运行,所以被等同于 runnable。然而uninterruptible sleep 即使再短暂也是 sleep,何况现实世界中 uninterruptible sleep 未必很短暂,大量的、或长时间的 uninterruptible sleep 通常意味着 IO 设备遇到了瓶颈。

     

    D状态进程描述(不可中断的睡眠状态)

    产生原因:进程向内核发起io,网络等请求时,内核去分配其资源给予进程,但此时磁盘繁忙资源紧张,或者是网络繁忙拥堵的时候,内核无法将进程需要的资源分配给进程,此时内核要求进程继续等待,也就是D状态,直到资源可以分配给进程的时候,才会转换为R和其它状态。也就是说如果内核由于某些原因无法申请到资源,进程将长时间处于D状态。

     

    影响:进程处于D状态是正常的,但是需要注意的是 D 状态的进程会增加系统的平均负载。

     

     

     

     

     

     

     

     

     

     

     

    在了解了load average和D状态之后,我们可以排查本主机系统的状态情况。

     

    查看网络连接,发现很多关于ftp的网络连接,且一直频繁的波动,说明业务的请求很高。

    云服务器 CPU使用率过低 服务器cpu使用率很低_重启_06

  • 云服务器 CPU使用率过低 服务器cpu使用率很低_云服务器 CPU使用率过低_07

  •  

    重点排查ftptrans进程的情况

    可以看到ftptrans进程多为D状态,且会占用一定的cpu。

    云服务器 CPU使用率过低 服务器cpu使用率很低_物理内存_08

  • ftptrans进程总数量在150-350左右波动

    云服务器 CPU使用率过低 服务器cpu使用率很低_重启_09

  • 处于状态D的ftptrans进程数量也十分之多,峰值可以达到100以上

    云服务器 CPU使用率过低 服务器cpu使用率很低_网络连接_10

  • 此状态的ftptrans进程数量在波动之中,正常情况下D状态会转变为其它状态。

    云服务器 CPU使用率过低 服务器cpu使用率很低_云服务器 CPU使用率过低_11

  • 发现很多ftptrans进程且长时间处于D状态下,数量在50以上

    云服务器 CPU使用率过低 服务器cpu使用率很低_物理内存_12

  • 云服务器 CPU使用率过低 服务器cpu使用率很低_网络连接_13

  •  

    高峰期:发现ftptrans进程数量突增300多,D状态此时也增至96,load负载显著提升。

    云服务器 CPU使用率过低 服务器cpu使用率很低_网络连接_14

  • 一般时段,发现ftptrans进程数量降低到169,D状态减少至58,load负载显著降低

    云服务器 CPU使用率过低 服务器cpu使用率很低_重启_15

    3.6日志排查

    1.没有发现异常

    结论

    经过排查,主机load average负载主要影响因素是ftptrans进程数量,且长时间处于D状态下ftptrans进程数量升高会导致load average值增高明显,间接影响了响应速度。

    建议:

    1. ftptrans进程D状态主要是等待io资源和网络时间过长产生的,初步怀疑由于该主机ftp并发量大,且为ftp进程IO读写要求高,导致主机资源利用率过高,排查发现主机负载均已超过CUP核数值,且物理内存使用率常年在百分之九十以上,建议拆分业务,或增加主机资源。
    1. 长时间处于D状态下的进程可能无法杀死,此状态下的进程需要释放,建议重启主机。