Linux系统运维命令:查看http的并发请求数及其TCP连接状态(使用netstat结合awk和sort,组合命令实现功能)

目              录

一、需求

二、解决方法

(一)解决思路

(二)命令

三、实例演示和命令解释

(一)实例演示

(二)命令解释

四、扩展


一、需求

      用户访问一个视频监控平台web服务特别频繁,据客户说,有大概2000个用户,要随机访问这个视频监控平台,这样对带宽的要求非常大。因此,他们需要查看到底有多少个http的并发请求,并想了解这些请求是不是活跃的。

二、解决方法

(一)解决思路

       这个本来是个网络问题,但是客户给我们提出了这个请求,我们只能先办法满足这个要求。

可以使用netstat结合awk,组合命令来实现:netstat显示的TCP连接状态是底层的TCP连接状态,,然后通过分析TCP连接状态来间接了解HTTP的并发情况。

这个web服务的端口是26039,因此要针对这个端口进行过滤。

(二)命令

        经过反复斟酌,考虑使用netstat结合awk和sort,形成组合命令,实现需求,如下:

netstat -n --tcp | awk '/:26039/ {++S[$NF]} END {for(a in S) print a, S[a]}' | sort -rn

 

三、实例演示和命令解释

(一)实例演示

        直接在系统中输入命令,如下:

[root@ecs-52a1 home]# netstat -n --tcp | awk '/:26039/ {++S[$NF]} END {for(a in S) print a, S[a]}' | sort -rn
TIME_WAIT 1
ESTABLISHED 7
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# date
Sun Feb 25 22:37:05 CST 2024
[root@ecs-52a1 home]#

        过一会再运行        

[root@ecs-52a1 home]# date
Sun Feb 25 22:37:26 CST 2024
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# netstat -n --tcp | awk '/:26039/ {++S[$NF]} END {for(a in S) print a, S[a]}' | sort -rn
TIME_WAIT 2
FIN_WAIT2 2
ESTABLISHED 7
[root@ecs-52a1 home]#

(二)命令解释

        本命令的作用是:统计通过端口26039 (视频监控平台的HTTP端口)的TCP连接的不同状态的数量,并按数量降序排序。

1、netstat -n --tcp

    netstat:这是一个命令行工具,用于显示网络连接、路由表、接口统计等网络相关信息。
    (1)-n:这个选项告诉 netstat 以数字形式显示地址和端口号,而不是尝试解析主机名、服务名等。使用数字形式可以加快命令的执行速度,因为它避免了DNS查找和服务名到端口号的转换。
    (2)--tcp:这个选项限制netstat的输出只显示TCP连接的信息。
2、|
    这是一个管道符,用于将前一个命令的输出作为下一个命令的输入。在这个例子中,netstat -n --tcp的输出被传递给awk命令进行处理。
3、awk '/:26039/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    awk是一个强大的文本处理工具,用于模式扫描和文本/数据提取。
    (1)/:26039 /:这是awk的模式部分,它匹配包含:26039 (即端口26039)的行。这通常意味着这些行表示的是通过HTTP默认端口的连接。
    (2){++S[$NF]}:这是awk的动作部分,对于匹配到模式的每一行,它都会执行这个动作。$NF是awk中的一个特殊变量,代表当前行的最后一个字段(通常是TCP连接状态,如LISTEN、ESTABLISHED等)。++S[$NF]将数组S中以TCP状态为索引的值加一,从而统计每种状态出现的次数。
    (3)END {for(a in S) print a, S[a]}:这是awk的结束部分,当所有行都被处理完后,它会执行这个动作。这部分代码遍历数组S,打印出每个TCP连接状态(即数组S的索引a)以及它出现的次数(即数组S的值S[a])。
4、| sort -rn
    sort命令用于对文本行进行排序。
    -r  选项表示逆序排序,即从大到小。
    -n  选项表示按数值排序,而不是按字符排序(这对于数字来说很重要,因为按字符排序可能会导致例如“10”在“2”之前)。

四、扩展

        在实际使用中,你可能会用到的是其他端口,你可稍微做些修改,就可以适合您的应用了。比如,http接口默认是80端口,经常会用到,你可以用如下命令即可:

netstat -n --tcp | awk '/:26039/ {++S[$NF]} END {for(a in S) print a, S[a]}' | sort -rn

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值