重启后服务器的软中断 CPU 使用率突然升高

重启后服务器的软中断 CPU 使用率突然升高

一个 48 GB RAM 虚拟服务器维护着大约 25k TCP 连接(现场登录以设置 SSH 隧道的设备),内存耗尽,开始交换,速度变慢等。我们升级并重新启动。即使在恢复了 25k 连接并处理了最初的 DDOS 风暴之后,服务器现在仍然显示大量软中断使用。我该如何找到原因?

您可以在这里看到这些事件:

Munin CPU 图

令人惊讶的是,以前没有太多的软中断。现在,有 8 个内核线程占用了大约 60% 的 CPU(ksoftirqd线程)。

查看 Munin 图表,我发现中断PCI-MSI 49153-edge virtio0-input.0增加了很多(请注意对数 y 尺度):

Munin 打断图表

机器必须处理的网络流量实际上并没有改变。

我编写了一个简短的 python 脚本,显示每秒的中断次数,从/proc/interrupts开始到结束PCI-MSI 49153-edge virtio0-input.0,大多数情况下每秒约为 50-100 次,但偶尔会出现 5000 - 10000 次突发。

因为在升级过程中,虚拟机主机的控制面板宣布需要将虚拟机迁移到另一台服务器。我推测那台服务器有不同的以太网控制器、不同的模拟中断控制器或其他什么的,但他们甚至将虚拟机迁移回来了,而且没有任何区别。

另一个不同之处是 VM 从 变为vmlinuz-4.15.0-45-generic/boot/vmlinuz-4.15.0-72-generic最近 Intel 发布了各种 CPU 补丁,我可以想象其中一定有漏洞。

最大的问题是,我如何找到根本原因,或者获取有关这些中断来自何处的更多信息?将服务器重新启动到旧内核是可能的,但并不可取。

答案1

原来是有人在上面安装了 systemd 服务,用于收集进程记账信息。删除它就可以解决问题。

相关内容