我们通过防火墙使用 NFS,这限制了性能。
每当执行一些大型 IO 操作(如 tar)时,我们都会偶尔遇到客户端主机负载增加的情况。
我的理解是 tar 会导致拥塞,从而影响其他 NFS 操作。
而且由于用户的主目录也在 NFS 上,而 NFS 的新性能不佳(由于 tar 命令拥塞而导致)导致 ssh、su、ls 等常规操作也变得缓慢,并且与在生产环境中一样,这些操作可能很高,因此有更多的操作等待同时完成,从而增加平均负载。在 sar 报告中可以发现平均负载的增加。
但我不清楚的是 tar 到底在哪里造成了拥塞?是在 NFS 存储(我们这里是 netapp)中还是在网络中?
我的上述假设仅当拥塞发生在网络上时才是正确的,因为我们当时没有看到对其他 NFS 客户端的任何性能影响(好像拥塞存在于存储服务器中,所有客户端都应该受到影响)。
此外,如果我的假设正确,我不确定如何检查客户端和服务器之间是否存在网络拥塞。
答案1
很难说。你需要更多地了解系统。从这 10 个命令开始: 60,000 毫秒内的 Linux 性能分析
例如,如果vmstat
r 列远大于 CPU 数量,则表示有进程正在等待运行,并且 CPU 已饱和。top
查看进程状态代码区分等待 I/O(D)和等待 CPU(R)。
在 Linux 上,考虑使用一个会频繁轮询大量指标的工具,例如网络数据。
不要将调查仅限于主机。查看从主机到存储的所有网络路径上的利用率和错误指标。检查存储阵列的利用率和错误。