平均负载高但 CPU 使用率低 - 如何在不重启的情况下降低负载?

平均负载高但 CPU 使用率低 - 如何在不重启的情况下降低负载?

我为我的实验室维护了十几台 xubuntu (16.04.6) linux 服务器。它们都通过 nfs/autofs/ldap 服务互连,形成一个分布式集群。它一直运行良好,但两天前,提供 ldap+home dir nfs 服务的中央服务器宕机了。无需亲自去手动重启机器,我设法使用维护帐户登录每台机器,并将 ldap/nfs 挂载切换到备份服务器。大多数服务器无需重启即可恢复运行。我通过 强制卸载了挂载的 nfs 挂载(包括用户主目录)umount -f -l /mount/point

但是,我注意到,由于之前的 nfs 挂载消失了,导致一些进程处于睡眠/停止状态。当我登录这些计算机时,我注意到平均负载数字异常高,在输入 top 时范围在 20-100 之间,例如:

top - 18:30:46 up 50 days, 23:35, 10 users,  load average: 17.59, 17.85, 23.97
Tasks: 494 total,   1 running, 396 sleeping,   0 stopped,  19 zombie
%Cpu(s):  3.0 us,  0.5 sy,  0.4 ni, 95.1 id,  1.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem : 16382324 total,  1159748 free,  7052016 used,  8170560 buff/cache
KiB Swap:  8458236 total,  7108860 free,  1349376 used.  8296156 avail Mem 

从上面的输出中,可以看到平均负载很高,但 CPU 大部分时间处于空闲状态。有 19 个僵尸程序,90% 的进程处于休眠状态。

另一个看起来像这样

top - 18:56:40 up 18 days, 57 min,  9 users,  load average: 25.23, 25.16, 28.13
Tasks: 494 total,   1 running, 377 sleeping,   0 stopped,  40 zombie
%Cpu(s):  1.5 us,  0.4 sy,  0.0 ni, 49.0 id, 49.2 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 32612980 total,  2231320 free, 10522468 used, 19859192 buff/cache
KiB Swap:  8458236 total,  8451836 free,     6400 used. 19531452 avail Mem 

其中一台机器的平均负载一夜之间从 40 多增加到今天早上的 130 多。我发现这是由于一些 cron 作业造成的。

我试图杀死僵尸,但没有成功。我看到这个帖子并成功杀死了一些“D”(不间断睡眠)状态进程,使负载降至 20-30 左右,但仍然看起来相当高。

我想知道我是否可以采取一些措施来关闭这些死机/僵尸/停止程序。我不想重新启动,因为这可能会有无法恢复的风险,尤其是对于我刚刚切换到的备用 ldap/nfs 服务器。尽管平均负载很高,但这些机器使用起来很顺畅。CPU 使用率很低,CPU 温度也很低。我希望将负载恢复到正常水平,通常为 1 或低于 1。不重新启动可以实现吗?

相关内容