在
Linux服务器上,可以使用netstat -tan | grep ESTABLISHED | wc -l但这不适用于带有-n1的高负载服务器.
如果服务器不是很忙或者监视间隔足够大,这种方法可以正常工作.但是什么可以被推荐作为高负载服务器的替代品?
解决方法
使用/ proc减少工作量
我喜欢直接通过/ proc访问内核变量.这非常有效,快速且系统友好.
有一个名为/ proc / net / tcp的伪文件(内核变量表)
内核存储TCP连接和监听列表.名为st for state的第6个字段可以包含0A表示监听条目,01表示已建立的连接.
计算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变量可以更快.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。