我有一个linux服务器,它总是让它的NIC超载,我需要基于连接和CPU利用率来可视化这种情况发生的原因。我该怎么做?
例如,为了可视化磁盘iowait,我使用了一些工具,比如atop和iotop,它们告诉我进程的PID及其CPU使用情况;使用这些信息,我可以找到哪个PID正在重载服务器。
问题是,我在网络中遇到了同样的问题,无法隔离和排除b/c上的问题,我无法找到哪些进程被链接到哪个连接(我知道可以使用netstat,但netstat没有告诉我CPU的使用情况)。
现在我已经清楚地说明了这一点,我需要能够监视连接和netfilter的CPU使用情况和/或内核时间。我该怎么做?像ps、top和htop这样的传统工具无法做到这一点。有人建议我检查干扰,但这在我看来是“不对的”。
发布于 2013-07-07 22:48:58
我找到的最好的方法就是观察内核时间。如果内核时间很高,那么我将检查/proc/interrupts。为了进一步调试这一点,我将使用perf。pktstat也能很好地可视化流量。
collectl -stnc也是好的。
发布于 2013-02-12 06:15:12
您可以使用wireshark / ethereal / tcpdump转储所有通信量,从而隐式地转储重载PC的通信量。这并不能获得CPU信息,但它会准确地告诉您所涉及的端口和数据,这应该会直接引导您找到所涉及的进程。
与所有与问题系统的交互一样,这种度量可能会影响行为,但这也更有可能导致比不太准确的答案更快的答案(IMO)。如果此测量确实使系统正常工作,而不是以您想要的方式失败,则可以使用抽头并使用外部设备进行测量。
您也可以使用“iftop”来显示带宽占优势,但请记住带宽!= CPU。
https://serverfault.com/questions/477851
复制相似问题