linux – 获取TCP建立连接的数量
发布时间:2020-12-13 17:08:47 所属栏目:Linux 来源:网络整理
导读:在 Linux服务器上,可以使用netstat -tan | grep ESTABLISHED | wc -l但这不适用于带有-n1的高负载服务器. 如果服务器不是很忙或者监视间隔足够大,这种方法可以正常工作.但是什么可以被推荐作为高负载服务器的替代品? 解决方法 使用/ proc减少工作量 我喜欢
在
Linux服务器上,可以使用netstat -tan | grep ESTABLISHED | wc -l但这不适用于带有-n1的高负载服务器.
如果服务器不是很忙或者监视间隔足够大,这种方法可以正常工作.但是什么可以被推荐作为高负载服务器的替代品? 解决方法
使用/ proc减少工作量
我喜欢直接通过/ proc访问内核变量.这非常有效,快速且系统友好. 有一个名为/ proc / net / tcp的伪文件(内核变量表) 计算TCP建立的连接: 通过使用grep grep </proc/net/tcp -c '^ *[0-9]+: [0-9A-F: ]{27} 01 ' 通过使用awk awk </proc/net/tcp 'BEGIN{t=0};{if ($4 == "01") {t++;}};END{print t}' 要么 awk </proc/net/tcp 'BEGIN{t=0};/^ *[0-9]+: [0-9A-F: ]{27} 01 /{t++};END{print t}' 通过使用sed sed </proc/net/tcp '/^ *[0-9]+: [0-9A-F: ]{27} 01 /p;d' | wc -l 执行时间处理时间 由于这个问题代表高工作负载系统.我做了一个小板凳: Method Answer by Milliseconds grep Techno 2.48 awk no regexp ($4=="01") 2.51 sed | wc 2.67 awk with regexp 2.93 ss -neopt state established | wc -l Suprjami 15.14 lsof -i tcp -s tcp:ESTABLISHED Tonioc 25055.00 好的Tonioc的答案非常缓慢,但他的冗长非常有趣.因此在高工作负载系统上显然无法使用. 这个工作台让你看到如果ss是一个非常有用的专用工具,那么询问/ proc变量可以更快. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |