ericslaw Asked: 2009-07-07 12:29:20 +0800 CST2009-07-07 12:29:20 +0800 CST 2009-07-07 12:29:20 +0800 CST 服务器上的 TCP 监控:比较 netstat 与 lsof? 772 我正在监视服务器上的 TCP 堆栈,希望一般推断出盒子上的应用程序问题。 我的第一个倾向是测量所有报告状态(LISTEN、ESTABLISHED、FIN_WAIT2、TIME_WAIT 等)的套接字数量并检测一些异常情况。 一位队友建议“lsof”是查看 TCP 堆栈处于什么状态的更好工具。 来自服务器故障人群的任何偏好或经验提示? linux unix tcp netstat lsof 4 个回答 Voted Best Answer Geoff Fritz 2009-07-07T12:53:05+08:002009-07-07T12:53:05+08:00 我更喜欢 lsof 因为它的输出在它运行的所有平台上都是一致的。不过,您几乎可以从这两个程序中获得相同的信息。我认为这取决于个人喜好。 Suroot 2009-07-08T11:36:27+08:002009-07-08T11:36:27+08:00 我的第一个含义是使用netstat -ptan它将为您提供您正在寻找的所有信息。可能是排序和唯一的管道。下面应该给你一个很好的套接字状态'。 netstat -ptan | awk '{print $6 " " $7 }' | sort | uniq -c Tim 2009-07-08T11:07:16+08:002009-07-08T11:07:16+08:00 查看dstat并运行: % sudo dstat --tcp 更好的是,如果您想分析输出,可以使用 --output 将其写入 CSV。 Christopher Cashell 2009-07-08T11:56:05+08:002009-07-08T11:56:05+08:00 我认为这实际上更多是个人喜好,因为通过一些调整(和正确的命令选项),您可以从任何一个中获得几乎相同的信息。 但是,如果您想监视各种状态下的连接数,我不会使用单次命令行工具来执行此操作。我会利用一些可以做一些趋势的东西,这样你就可以随着时间的推移对其进行审查。像 munin 这样的东西会非常有用,因为它会随着时间的推移绘制图表(同时向您显示其他可能有用的系统统计数据)。 如果您对盒子本身以及它的执行方式(无论是在问题期间还是在不存在问题时)有很好的信息,对应用程序进行故障排除总是会更容易。
我更喜欢 lsof 因为它的输出在它运行的所有平台上都是一致的。不过,您几乎可以从这两个程序中获得相同的信息。我认为这取决于个人喜好。
我的第一个含义是使用
netstat -ptan
它将为您提供您正在寻找的所有信息。可能是排序和唯一的管道。下面应该给你一个很好的套接字状态'。netstat -ptan | awk '{print $6 " " $7 }' | sort | uniq -c
查看dstat并运行:
更好的是,如果您想分析输出,可以使用 --output 将其写入 CSV。
我认为这实际上更多是个人喜好,因为通过一些调整(和正确的命令选项),您可以从任何一个中获得几乎相同的信息。
但是,如果您想监视各种状态下的连接数,我不会使用单次命令行工具来执行此操作。我会利用一些可以做一些趋势的东西,这样你就可以随着时间的推移对其进行审查。像 munin 这样的东西会非常有用,因为它会随着时间的推移绘制图表(同时向您显示其他可能有用的系统统计数据)。
如果您对盒子本身以及它的执行方式(无论是在问题期间还是在不存在问题时)有很好的信息,对应用程序进行故障排除总是会更容易。