在 Linux 中可视化过载的网卡(内核时间)?

在 Linux 中可视化过载的网卡(内核时间)?

我有一台 Linux 服务器,它的 NIC 总是过载,我需要根据连接数和 CPU 利用率来直观地了解这种情况发生的方式和原因。我该怎么做?

例如,为了直观地了解磁盘 iowait,我使用诸如atopiotop之类的工具来告诉我进程的 PID及其 CPU 使用率;通过这些信息我可以找到哪个 PID 导致服务器过载。

问题是我在网络方面遇到了同样的问题,并且无法隔离和排除故障,因为我无法找到哪些进程链接到哪些连接(我可以使用netstat我知道但netstat没有告诉我 CPU 使用率)。

现在我已经说清楚了,我需要能够监控 conntrack 和 netfilter 的 CPU 使用率和/或内核时间。我该怎么做?诸如pstop和等传统工具htop无法做到这一点。有人建议我检查中断,但对我来说这似乎不太“正确”。

答案1

我发现最好的方法是观察内核时间。如果内核时间很长,我会检查/proc/interrupts。为了进一步调试,我会使用perfpktstat也可以用来可视化流量。

collectl -stnc也不错。

答案2

您可以使用 wireshark / ethereal / tcpdump 转储所有流量,隐式转储使 PC 过载的流量。这不会为您提供 CPU 信息,但会告诉您涉及的确切端口和数据,这将直接引导您找到所涉及的进程。

与所有与问题系统的交互一样,此测量可能会影响行为,但与不太准确的测量相比,它更有可能产生更快的答案(在我看来)。如果此测量确实导致系统正常运行,而不是像您希望的那样失败,您可以使用水龙头并使用外部设备进行测量。

您还可以使用“iftop”来显示带宽占用情况,但请记住带宽 != CPU。

相关内容