Linux

重啟後伺服器突然有很高的softirq cpu使用率

  • January 17, 2020

一個 48 GB RAM 的虛擬伺服器維持大約 25k 的 TCP 連接(現場設備登錄以建立 SSH 隧道)用完 RAM 並開始交換,速度變慢等。我們升級並重新啟動。即使在 25k 連接恢復並處理了最初的 DDOS 風暴之後,伺服器現在也顯示出大量的軟中斷使用。我如何找到原因?

在這裡你可以看到事件:

穆寧 CPU 圖

令人驚訝的是,過去沒有很多軟中斷。現在,有 8 個核心執行緒在處理大約 60% 的 CPU(ksoftirqd執行緒)。

查看 Munin 圖表,我看到 的中斷PCI-MSI 49153-edge virtio0-input.0增加了很多(注意 log y 標度):

穆寧中斷圖表

機器必須處理的網路流量並沒有真正改變。

我寫了一個快速的 python 腳本,它顯示每秒的中斷,從/proc/interruptsfrom 開始PCI-MSI 49153-edge virtio0-input.0,它主要是每秒 50-100 次,但每隔一段時間,就會有 5000 到 10000 次爆發。

因為在升級過程中,VM主機的控制面板提示需要將VM遷移到另一台伺服器。我推測該伺服器具有不同的乙太網控制器,不同的仿真中斷控制器或其他任何東西,但他們甚至將虛擬機遷移回來,並且沒有區別。

另一個區別是 VM 從vmlinuz-4.15.0-45-generic/boot/vmlinuz-4.15.0-72-generic. 隨著最近所有的英特爾 CPU 更新檔,我可以想像有什麼東西偷偷溜進去了。

最大的問題是,我如何找到根本原因,或者獲取更多資訊這些中斷來自何處?將伺服器重新啟動到舊核心是可能的,但不可取。

原來有人安裝在上面,它有一個收集程序會計資訊的 systemd 服務。刪除它修復它。

引用自:https://serverfault.com/questions/995234