1、容器云计算节点负载值高,通过top可以看到Load Average:70.1  71.3  70.8,虚拟机有8个cpu:

cpu使用率高导致(R状态)?

同时在top中观察一段时间,消耗cpu最高的为docker进程,峰值为125%左右,应该也不算高。top的cpu的统计数据中us、sy、wa都不高,id值为95,说明负载高的原因并不是cpu使用率高导致的。

不可中断状态的进程数过多导致(D状态)?

通过 ps aux | awk '{if($8 ~ /D/) print $0}' 可以找出状态为D(Disk Sleep),即不可中断状态的进程,发现存在10几个nmon进程,确认这些进程是监控进程后,通过 ps aux | awk '{if($8 ~ /D/) print $2}' | xargs kill -9强制杀掉这些进程,负载逐渐下降至2左右。

(D状态进程即不可中断状态的进程应该是不响应异步信号kill才对,为什么kill会生效呢?)

mpstat -P ALL可以看到所有cpu的使用情况,包括iowait

2、虚拟机执行 df -h无响应,通过strace df,发现卡在一个nfs的挂载点上面,这个是临时挂载的,umount问题解决。

处于D(uninterruptiblesleep)状态的进程通常是在等待IO,比如磁盘IO,网络IO,其他外设IO,如果进程正在等待的IO在较长的时间内都没有响应,那么就很会不幸地被ps看到了,同时也就意味着很有可能有IO出了问题,可能是外设本身出了故障,也可能是比如挂载的远程文件系统已经不可访问了(由down掉的NFS服务器引起的D状态),上述问题正是由这个远程NFS服务器不可用导致的。

3、在umount某个文件系统时,如果出现device is busy的提示,可以通过 lsof | grep {挂载点} 查看有哪些进程正在占用挂载点中的文件的文件句柄,这些进程处理完之后就可以正常umount。

参看链接:

https://www.cnblogs.com/embedded-linux/p/7043569.html

05-28 23:48