linux – 获取TCP建立连接的数量

linux – 获取TCP建立连接的数量,第1张

概述在 Linux服务器上,可以使用netstat -tan | grep ESTABLISHED | wc -l但这不适用于带有-n1的高负载服务器. 如果服务器不是很忙或者监视间隔足够大,这种方法可以正常工作.但是什么可以被推荐作为高负载服务器的替代品? 使用/ proc减少工作量 我喜欢直接通过/ proc访问内核变量.这非常有效,快速且系统友好. 有一个名为/ proc / net / tcp 在 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 ( == "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     Millisecondsgrep                                  Techno        2.48awk no regexp (=="01")                            2.51sed | wc                                            2.67awk with regexp                                     2.93ss -neopt state established | wc -l   Suprjami     15.14lsof -i tcp -s tcp:ESTABliSHED        Tonioc    25055.00

好的Tonioc的答案非常缓慢,但他的冗长非常有趣.因此在高工作负载系统上显然无法使用.

这个工作台让你看到如果ss是一个非常有用的专用工具,那么询问/ proc变量可以更快.

总结

以上是内存溢出为你收集整理的linux – 获取TCP建立连接的数量全部内容,希望文章能够帮你解决linux – 获取TCP建立连接的数量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1040496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存