Linux ab详解

devtools/2024/9/24 12:17:08/

前言

ab是apachebench命令的缩写,ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。
ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

命令详解

命令格式: ab [选项] [URL]选项包括:
-n 请求总数:指定要发送的请求数量。
-c 并发数:指定同时发送请求的并发数量。
-t 测试时间:指定测试的时间长度。
-p POST文件:使用POST方法时,指定包含POST数据的文件。
-T POST内容类型:指定POST数据的内容类型。
-k 保持连接:启用HTTP KeepAlive功能,允许单个连接发送多个请求。
-v 显示详细输出:显示每个请求的详细结果。
-i 忽略不可用的输出:在输出中忽略无效的请求。
-x 提供代理服务器信息:使用代理服务器进行测试。
-X 代理认证类型:指定代理服务器的认证类型。
-C 提供Cookie信息:发送Cookie到服务器。
-H 添加请求头:添加自定义的HTTP请求头。
-A 添加认证信息:添加认证信息到请求头中。
-m HTTP方法:指定HTTP方法,如GET、POST等。
-s 超时时间:指定每个请求的超时时间。
-g 生成gnuplot格式的输出:将结果保存为gnuplot格式的文件。
-e 输出CSV格式:将结果保存为CSV格式的文件。
-f HTML输出:将结果保存为HTML格式的文件。URL:测试的目标URL,[http[s]://]hostname[:port]/path。

示例用法

ab -n 1000 -c 10 http://example.com
上述命令将向http://example.com发送1000个请求,每次并发10个请求。ab -n 100 -c 5 -p postdata.txt -T application/json http://example.com
上述命令将使用POST方法向http://example.com发送100个请求,每次并发5个请求,并且使用postdata.txt文件中的JSON数据作为POST数据。对于实际场景中经常需要用的登录问题,如果接口需要验证Cookie ,那么使用-C写到Cookie内容
ab -n 100 -C key=value https://json.im或者使用 -H 带 Cookie 自定义多个字段
ab -n 100 -H "Cookie: Key1=Value1; Key2=Value2" http://localhost测试接口Header传入token
ab -n 1000 -c 10 -H 'token:abc' https://json.im

返回报文详解

Server Software:        Apache  		#服务器软件
Server Hostname:        json.im   #域名
Server Port:            80 				#请求端口号Document Path:          /   			#文件路径
Document Length:        40888 bytes 	#页面字节数Concurrency Level:      10   			#请求的并发数
Time taken for tests:   27.300 seconds  #总访问时间
Complete requests:      1000   			#请求成功数量
Failed requests:        0      			#请求失败数量
Write errors:           0
Total transferred:      41054242 bytes  #请求总数据大小(包括header头信息)
HTML transferred:       40888000 bytes  #html页面实际总字节数
Requests per second:    36.63 [#/sec] (mean)  #每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量
Time per request:       272.998 [ms] (mean)     #用户平均请求等待时间 
Time per request:       27.300 [ms] (mean, across all concurrent requests)# 服务器平均处理时间,也就是服务器吞吐量的倒数 
Transfer rate:          1468.58 [Kbytes/sec] received  #每秒获取的数据长度Connection Times (ms)min  mean[+/-sd] median   max
Connect:       43   47   2.4     47      53
Processing:   189  224  40.7    215     895
Waiting:      102  128  38.6    118     794
Total:        233  270  41.3    263     945Percentage of the requests served within a certain time (ms)50%    263    #50%用户请求在263ms内返回66%    271    #66%用户请求在271ms内返回75%    279    #75%用户请求在279ms内返回80%    285    #80%用户请求在285ms内返回90%    303    #90%用户请求在303ms内返回95%    320    #95%用户请求在320ms内返回98%    341    #98%用户请求在341ms内返回99%    373    #99%用户请求在373ms内返回100%    945 (longest request)

http://www.ppmy.cn/devtools/9576.html

相关文章

蓝桥杯刷题-乌龟棋

312. 乌龟棋 - AcWing题库 /* 状态表示:f[b1,b2,b3,b4]表示所有第 i种卡片使用了 bi张的走法的最大分值。状态计算:将 f[b1,b2,b3,b4]表示的所有走法按最后一步选择哪张卡片分成四类:第 i类为最后一步选择第 i种卡片。比如 i2,则…

Aurora 协议学习理解与应用——Aurora 64B66B协议学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Aurora 协议学习理解与应用——Aurora 64B66B协议学习 概述数据发送和接收帧传输过程链路层帧描绘64B/66B 编码多lane传输 帧接收过程Control Block Stripping 控制块剥离多l…

阿里云4核8G云服务器价格多少钱?700元1年

阿里云4核8G云服务器价格多少钱?700元1年。阿里云4核8G服务器租用优惠价格700元1年,配置为ECS通用算力型u1实例(ecs.u1-c1m2.xlarge)4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选,CPU采用Intel(R) Xeon(R…

「GO基础」文件名规范、关键字与标识符

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

TQZC706开发板教程:编译zynq linux内核2019_R1

您需要下载对应版本的Linux系统文件以及IMG1.3.1镜像文件。为了方便您的操作,本文所使用的所有文件以及最终生成的文件,我都已经整理并放置在本文末尾提供的网盘链接中。您可以直接通过该链接进行下载,无需在其他地方单独搜索和获取。希望这能…

Ubuntu-18.04本地化部署Rustdesk服务器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、配置防火墙二、安装三大件1.下载三大件2.安装三大件 三、安装客户端1.下载客户端1.Windows2.Linux 四、配置客户端连接服务器五、总结 前言 如果你是想数据…

第24篇 python基础

Python的基础语法相当简洁明了,以下是一些关键点及其简单案例分析:### 1. **标识符** - 标识符是用来给变量、函数、类等命名的名称,必须以字母(包括Unicode字符)、下划线 _ 或者非数字字符开头,后面可以跟…

【从浅学到熟知Linux】进程间通信之匿名管道方式(进程间通信方式汇总、匿名管道的创建、匿名管道实现进程池详解)

🏠关于专栏:Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程等内容。 🎯每天努力一点点,技术变化看得见 文章目录 进程间通信介绍如何实现进程间通信进程间通信分类 管道通信方式什么是管道匿名管道pipe匿名管道读写规则管…