问题场景:机器有些问题,业务访问正常,但cpu使用率这么低,负载这么高,我的乖乖几个亿的负载,跑到银河系了
不懂就百度:
- load average 过高可能和睡眠进程有关系 ,引导客户执行脚本截图
https://blog.csdn.net/qq_32352565/article/details/92185912
执行脚本
#!/bin/bash
LANG=C
PATH=/sbin:/usr/sbin:/bin:/usr/bin
interval=10
length=86400
for i in $(seq 1 $(expr ${length} / ${interval}));do
date
LANG=C ps -eTo stat,pid,tid,ppid,comm --no-header | sed -e 's/^ *//' | perl -nE 'chomp;say if (m!^S*[RD] s*!)'
date
cat /proc/loadavg
echo -e "n"
sleep ${interval}
done
执行结果来看没有D 睡眠进程
再次百度并请教专家核实:发现是老旧内核的一个BUG (开心)
# running 进程数量
#awk '/.nr_running/ {c = $3} END{print c}' /proc/sched_debug
# uninterruptible 进程数量
#awk '/.nr_uninterruptible/ {c = $3} END {print c}' /proc/sched_debug
解决办法
内核升级方法:
1. 对机器做好快照
2. uname -r查看当前内核版本,客户报障机器当前为3.10.0-327.el7.x86_64
uname -r
3.10.0-327.el7.x86_64
3. 升级内核
yum update kernel -y
4. 升级完需要reboot重启机器生效新的内核
5. 重启后执行uname -r查看新版本内核是否已经在机器上生效:
当前centos7最新内核版本为:
3.10.0-1160.31.1.el7