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

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

时间:2024-07-09 09:19:17浏览次数:22  
标签:sort http 52a1 netstat TCP 命令 awk 26039

一、需求

二、解决方法

(一)解决思路

(二)命令

三、实例演示和命令解释

(一)实例演示

(二)命令解释

四、扩展

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

  

原文链接:https://blog.csdn.net/weixin_70208651/article/details/136288714

标签:sort,http,52a1,netstat,TCP,命令,awk,26039
From: https://www.cnblogs.com/niewd/p/18291078

相关文章

  • 简易Git命令行入门
    简易的Git命令行入门教程:1.Git全局设置:gitconfig--globaluser.name"demo"gitconfig--globaluser.email"[email protected]"2.创建git仓库:mkdirdemo1cddemo1gitinittouchREADME.mdgitaddREADME.mdgitcommit-m"firstcommit"git......
  • 命令行开发工具
    GNU工具集在上个世纪八十年代,计算机都是奢侈品,操作系统里最著名的是Unix家族,当时还没有Windows、Linux之类的,Unix系统都是商业软件,里面的应用软件也是商业软件,全是封闭的环境。系统程序员RichardM.Stallman(RMS)在此环境下创立了与众不同的GNU项目(GNU'sNotUni......
  • HTTP协议30 丨 2特性概览
    刚结束的“安全篇”里的HTTPS,通过引入SSL/TLS在安全上达到了“极致”,但在性能提升方面却是乏善可陈,只优化了握手加密的环节,对于整体的数据传输没有提出更好的改进方案,还只能依赖于“长连接”这种“落后”的技术(参见第17讲)。所以,在HTTPS逐渐成熟之后,HTTP就向着性能方面......
  • HTTP协议29 丨 我应该迁移到HTTPS吗?
    今天是“安全篇”的最后一讲,我们已经学完了HTTPS、TLS相关的大部分知识。不过,或许你心里还会有一些困惑:“HTTPS这么复杂,我是否应该迁移到HTTPS呢?它能带来哪些好处呢?具体又应该怎么实施迁移呢?”这些问题不单是你,也是其他很多人,还有当初的我的真实想法,所以今天我就来跟你......
  • HTTP协议28 丨 连接太慢该怎么办:HTTPS的优化
    你可能或多或少听别人说过,“HTTPS的连接很慢”。那么“慢”的原因是什么呢?通过前两讲的学习,你可以看到,HTTPS连接大致上可以划分为两个部分,第一个是建立连接时的非对称加密握手,第二个是握手后的对称加密报文传输。由于目前流行的AES、ChaCha20性能都很好,还有硬件优化,报文......
  • HTTP协议27丨更好更快的握手:TLS1.3特性解析
    上一讲中我讲了TLS1.2的握手过程,你是不是已经完全掌握了呢?不过TLS1.2已经是10年前(2008年)的“老”协议了,虽然历经考验,但毕竟“岁月不饶人”,在安全、性能等方面已经跟不上如今的互联网了。于是经过四年、近30个草案的反复打磨,TLS1.3终于在去年(2018年)“粉墨登场”,再......
  • Oracle系列---【表空间常用命令】
    1.创建表空间#创建大小为30G且开启自增的表空间CREATETABLESPACETEST_COM_SMM_FRONTDATAFILE'/oradata/ORA19/datafile/TEST_COM_SMM_FRONT_01.dbf'SIZE30024MAUTOEXTENDON;2.查看表空间使用情况#表空间数据文件维度使用率查询SELECTb.TABLESPACE_NAME,b......
  • Python排序,你用对了吗?一文教你sorted和sort的正确姿势!
    目录1、sorted基础用法......
  • 保姆级阿里云接入http接口加密数据教程,一看就会!大厂经验分享,接口数据落表
    前言:有关接口数据的接入,源端会给予我们一份接口说明文件,接着我们需依据对方提供的接口文档进行代码编写,以实现数据落表。接入步骤大致可分为以下几步:1.依据对方提供的接口文档,明确接口地址、请求方式、传参信息以及参数格式等。2.借助编写代码,获取接口数据内容。3.按照......
  • vbc.exe 是 Microsoft Visual Basic 编译器的命令行工具。它用于编译 Visual Basic (.
    vbc.exe是MicrosoftVisualBasic编译器的命令行工具。它用于编译VisualBasic(.NET)的源代码文件(.vb文件)到可执行文件或者库文件(例如.exe或.dll)。vbc.exe提供了一种方式来将VisualBasic源代码编译成在.NETFramework或.NETCore平台上可执行的程序。......