今天发现服务器宝塔面板负载居然是100% 但是cpu 和内存其实并不高
通过命令查看主机
uptime 中load average 居然高达18.23 看来负载是真的高了
通过vmstat 看看具体问题
procs:
r 表示运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU个数,说明CPU不足。
b 表示等待资源的进程数,比如正在等待I/O、或者内存交换等。
memory:算是正常
swap:
si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够或者内存泄露了,要查找耗内存进程解决掉。
so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示内存不足。
IO:
bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte
bo 块设备每秒发送的块数量
设置的bi+bo参考值为1000,如果超过1000,而且wa值较大,则表示系统磁盘IO有问题,应该考虑提高磁盘的读写性能。
图上还好
system:
in 每秒CPU的中断次数,包括时间中断。(较高)
cs 每秒上下文切换次数(较高)
这两个值越大,内核消耗的CPU就越多
cpu:
us 用户进程消耗的CPU时间百分比,us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法
sy 内核进程消耗的CPU时间百分比,sy值如果太高,说明内核消耗CPU资源很多,例如是IO操作频繁。
id CPU处于空闲状态的时间百分比。(cpu空闲)
wa io等待所占用的时间百分比,wa值越高,说明IO等待越严重,根据经验,wa的参考值为20%,如果wa超过20%,说明IO等待严重,引起IO等待的
原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制器的带宽瓶颈造成的(主要是块操作)通过上面的分析,发现主要是cpu每秒中断次数以及上下文切换较高
看看系统里面有没有D状态的 进程
ps -aux |grep D
果断kill试试?
kill -9 PID
终于正常了
还发现一个小问题
df -h 卡住了
解决办法:
1、首先就是使用strace去追踪到底在哪里卡住了
strace df -h
2、然后在使用strace df -h 就会显示出卡住的地方
stat("/home/wwwroot/xxx.cn/public
3、使用 umount -l 命令卸载无效挂载目录
umount -l /home/wwwroot/xxx.cn/public
网站挂载点出现了问题
再使用df -h
就可以看到命令正常执行了