我有一个Linux服务器,不断获取其网卡过载,我需要根据连接和CPU利用率可视化如何以及为什么发生这种情况。 我该怎么做呢?
例如; 为了让我可视化磁盘iowait,我使用了atop和iotop等工具来告诉我该进程的PID 和CPU使用情况 ; 使用这个信息,我可以find哪个PID超载服务器。
问题是,我遇到了与networking相同的问题,我无法隔离和排除故障的问题B / C我无法find哪些进程链接到哪些连接(我可以使用netstat我知道,但netstat不告诉我CPU使用率)。
现在我已经明确了我需要能够监视conntrack和netfilter的CPU使用率和/或内核时间。 我该怎么做呢? 传统的工具如ps , top和htop无法做到这一点。 我已经被build议检查中断,但是这对我来说似乎并不“正确”。
您可以使用wireshark / ethereal / tcpdump转储所有stream量,隐式转储过载PC的stream量。 这并不能得到CPU信息,但是它确切地告诉你涉及到哪些端口和数据,哪些应该引导你直接进入涉及的过程。
就像所有与问题系统的相互作用一样,这种测量可能会影响行为,但是这比较不准确的答案(IMO)更有可能产生更快的答案。 如果这种测量确实会导致系统正常工作,而不是按照您所希望的方式正常工作,则可以使用外接设备进行轻拍和测量。
你也可以用'iftop'来显示带宽大小,但要记住带宽!= CPU。
我发现这样做的最好方法是观察内核时间。 如果内核时间很高,那么我会检查/proc/interrupts 。 为了进一步debugging,我将使用perf 。 pktstat也是很好的可视化stream量的stream量。
collectl -stnc也不错。