当用户 grep 大文件时 SSH 服务器会停止运行 - 高 NET_RX 和高 softirqs - 如何限制?

当用户 grep 大文件时 SSH 服务器会停止运行 - 高 NET_RX 和高 softirqs - 如何限制?

我有一台运行 Fedora 14 - Linux-2.6.35 的服务器,配有 1Gbps NIC。它具有由 Isilon 服务器提供的 NFSv3 挂载。

每当任何用户使用 NFS 服务器上存在的大型文件(grep 或类似文件)时,它都会冻结。我可以清楚地看到,就在服务器冻结之前,

  1. 网络使用量接近 1 Gbps,
  2. 来自 NET_RX 的中断使 CPU 核心不堪重负,并且
  3. 大量的 soft_irqs。

有什么办法可以解决这些摊位的问题吗?

NIC 上的 ifconfig 显示

[root@interactive ~]# ifconfig eth1 <redacted>
eth1      Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
      inet addr:xx.yy.zz.aa  Bcast:A.B.C.255  Mask:255.255.252.0
      inet6 addr: aaaa::bbb:ccc:ddd:eee/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:685902495 errors:6256 dropped:28226 overruns:0 frame:6256
      TX packets:661268729 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:973006411081 (906.1 GiB)  TX bytes:146154890021 (136.1 GiB)
      Interrupt:19 Memory:d8000000-d8012800 

错误是否太高了?

有没有办法可以限制 SSH 用户饱和网络接口的能力?

答案1

建议的解决方案是增加服务器可用的带宽。您可以升级到 10G 连接,也可以在服务器上添加其他 NIC 并将它们组合在一起(以太通道)。

此外,正如 Sven 上面的评论,您需要确保您拥有最新的 NIC 驱动程序,并在需要时升级操作系统。

要限制 ssh 用户的能力,你可以尝试服务质量(流量控制)。你可以搜索“tc”命令了解更多信息。

答案2

网络将会启动,因为无论什么(grep 等)都必须读取该文件。我会尝试以下方法:

升级到以下版本这十年- 我知道,你陷入困境了。

通过控制台尝试同样的事情 - 我敢打赌这不是 SSH

日志(即 /var/log/messages、dmesg)中是否有任何内容,例如 CPU 卡住或 NFS 服务器无响应?

Wireshark 用于碎片数据包等

更改 nfs 客户端挂载选项:hard vs soft、wsize、rsize、timeo 和 retrans、UDP vs TCP

降低两台设备的 MTU

相关内容