我正在监控服务器上的 TCP 堆栈,希望能够从总体上推断出服务器上应用程序的问题。
我的第一个想法是测量所有报告状态(LISTEN、ESTABLISHED、FIN_WAIT2、TIME_WAIT 等)的套接字数量并检测一些异常。
一位队友建议使用“lsof”这个更好的工具来查看 TCP 堆栈的状态。
serverfault 人群有什么偏好或经验提示吗?
答案1
我更喜欢 lsof,因为它的输出在所有运行的平台上都是一致的。不过,你可以从这两个程序中获得几乎相同的信息。我认为这取决于个人喜好。
答案2
我的第一个暗示是使用netstat -ptan
它将为您提供您正在寻找的所有信息。可能是管道到sort和uniq。以下内容应该为您提供大量套接字状态。
netstat -ptan | awk '{print $6 " " $7 }' | sort | uniq -c
答案3
答案4
我认为这实际上更多的是一种个人偏好,因为通过一些调整(和正确的命令选项),您可以从中获得几乎相同的信息。
但是,如果您想要监控各种状态下的连接数,我不会使用单一的命令行工具。我会使用可以进行趋势分析的工具,以便您可以随时间查看。munin 之类的工具非常有用,因为它可以随时间绘制图表(同时向您显示其他可能有用的系统统计数据)。
如果您对盒子本身及其运行情况(出现问题时和没有问题时)有充分的了解,那么对应用程序进行故障排除总是更容易。