我注意到 Ubuntu 14.04.4 LTS 存在一个错误;如果 NFS 客户端失去与 NFS 服务器的连接,该系统上的负载将飙升至 30 以上。
我注意到降低负载的唯一方法是延迟卸载 NFS 共享:umount -l /path/to/share
问题是;所有告诉我系统资源使用情况的常规工具都没有帮助:top
、htop
、iotop
、perf top
、sar
、mpstat
表明系统没有任何问题;没有任何正在运行的进程或线程可以解释为什么负载如此之高。
我的假设是,由于 NFS 是在 Linux 的内核中实现的,因此这些工具根本看不到发生了什么;有没有办法更好地解决这个问题?因为传统的工具似乎不起作用。有没有办法监控Linux中的运行队列?
答案1
通过计算以下进程的数量来计算负载平均值:
- 当前正在运行
- 已准备好运行,但正在等待调度(CPU 被其他进程占用)
- 阻塞等待 I/O(不间断睡眠,在
top
/中显示为“D”ps
)
并通过加权平均值(随着时间的推移,获得 1、5 和 15 分钟的值)。
因此,您的高平均负载并不意味着 CPU 过载(查看 中的 %Cputop
等进行检查);这可能只是意味着您在尝试访问(关闭的)NFS 服务器时被阻止了一堆进程。