當使用者 grep 大檔案時,SSH 伺服器陷入停頓 - 高 NET_RX 和高軟體中斷 - 如何限制?

當使用者 grep 大檔案時,SSH 伺服器陷入停頓 - 高 NET_RX 和高軟體中斷 - 如何限制?

我有一台運行 fedora 14 - Linux-2.6.35 的伺服器,帶有 1Gbps NIC。它具有由 Isilon 伺服器提供的 NFSv3 安裝。

每當任何使用者使用 NFS 伺服器上存在的大檔案(grep 或類似檔案)時,它都會凍結。我可以清楚地看到,就在伺服器凍結之前,

  1. 網路使用率接近 1 Gbps,
  2. 來自 NET_RX 的中斷壓垮了 cpu 核心,並且
  3. 大量軟中斷。

有什麼想法可以接近這些攤位嗎?

網路卡上的 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 並將它們組合在一起 (etherchannel)。

此外,正如 Sven 上面評論的那樣,您需要確保您的 NIC 擁有最新的驅動程序,並根據需要升級作業系統。

要限制 ssh 使用者的能力,可以嘗試服務品質(流量控制)。您可以透過搜尋“tc”命令找到更多資訊。

答案2

網路將會上升,因為無論什麼(grep 等)都必須讀取檔案。我會嘗試的是:

升級到版本這十年- 我知道,你被困住了。

透過控制台嘗試同樣的事情 - 我打賭這不是 SSH

日誌中是否有任何內容(即 /var/log/messages、dmesg),例如 CPU 卡住或 NFS 伺服器沒有回應?

Wireshark 用於分片資料包等

更改 nfs 用戶端掛載選項:硬與軟、wsize、rsize、timeo 和 retrans、UDP 與 TCP

降低兩台設備上的 MTU

相關內容