服务器上的TCP监视:比较netstat与lsof?


12

我正在监视服务器上的TCP堆栈,以希望一般性地推断出盒子上的应用程序有问题。

我的第一个倾向是测量所有报告状态(LISTEN,ESTABLISHED,FIN_WAIT2,TIME_WAIT等)中的套接字数量,并检测一些异常。

一个队友建议,“ lsof”将是查看TCP堆栈处于哪种状态的更好工具。

服务器故障人群有任何偏好或经验提示吗?


3
请添加* nix标签以吓跑我们的Windows怪胎
KevinH,2009年

Answers:


7

我更喜欢lsof,因为它的输出在运行它的所有平台上都是一致的。不过,您几乎可以从两个程序中获得相同的信息。我认为这取决于个人喜好。


2

我的第一个含义是使用netstat -ptan它将为您提供所有您正在寻找的信息。可能通过管道进行排序和唯一化。以下内容将为您提供大量的套接字状态信息。

netstat -ptan | awk '{print $6 " " $7 }' | sort | uniq -c


1

dstat并运行:

% sudo dstat --tcp

更好的是,如果您要分析输出,则可以使用--output将其写入CSV。


有趣的工具,仅可惜linux(尽管可以理解)。很高兴看到包含网络信息的类似SAR的东西(尽管linux sar版本似乎也显示了这一点)。
ericslaw

1

我认为这实际上更像是个人喜好,因为只要稍作调整(以及正确的命令选项),您就可以从其中任何一个获得几乎相同的信息。

但是,如果您想监视各种状态下的连接数,则不会使用单次命令行工具来执行此操作。我会利用一些趋势,以便您可以随时进行回顾。诸如munin之类的东西将非常有用,因为它会随着时间绘制图形(以及向您显示其他可能有用的系统统计信息)。

如果您对包装盒本身以及包装盒的运行情况有很好的了解(在问题发生期间和不存在问题时),对应用程序进行故障排除总是比较容易的。


命令行工具仅用于收集。您收集基准数据的目的确实是正确的方法。
ericslaw
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.