Linux
重啟後伺服器突然有很高的softirq cpu使用率
一個 48 GB RAM 的虛擬伺服器維持大約 25k 的 TCP 連接(現場設備登錄以建立 SSH 隧道)用完 RAM 並開始交換,速度變慢等。我們升級並重新啟動。即使在 25k 連接恢復並處理了最初的 DDOS 風暴之後,伺服器現在也顯示出大量的軟中斷使用。我如何找到原因?
在這裡你可以看到事件:
令人驚訝的是,過去沒有很多軟中斷。現在,有 8 個核心執行緒在處理大約 60% 的 CPU(
ksoftirqd
執行緒)。查看 Munin 圖表,我看到 的中斷
PCI-MSI 49153-edge virtio0-input.0
增加了很多(注意 log y 標度):機器必須處理的網路流量並沒有真正改變。
我寫了一個快速的 python 腳本,它顯示每秒的中斷,從
/proc/interrupts
from 開始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 服務。刪除它修復它。