当前位置:   article > 正文

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

查看http的并发请求数与其tcp连接状态

目              录

一、需求

二、解决方法

(一)解决思路

(二)命令

三、实例演示和命令解释

(一)实例演示

(二)命令解释

四、扩展


一、需求

      用户访问一个视频监控平台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

 

三、实例演示和命令解释

(一)实例演示

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

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

        过一会再运行        

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/184608
推荐阅读
相关标签
  

闽ICP备14008679号