首页 > 系统相关 >Linux ab详解

Linux ab详解

时间:2024-04-17 09:44:59浏览次数:17  
标签:ab http 请求 详解 Cookie 测试 Linux POST

前言

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     945

Percentage 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)

标签:ab,http,请求,详解,Cookie,测试,Linux,POST
From: https://www.cnblogs.com/niuben/p/18139837

相关文章

  • 在Linux中,如何使用tcpdump和tshark进行实时数据包捕获?
    tcpdump和tshark是两个常用的网络分析工具,它们可以捕获网络接口上的数据包,并提供实时的网络流量分析。tcpdump是一个命令行工具,而tshark是Wireshark的命令行版本,提供了更多的功能和更详细的输出。1.使用tcpdump进行实时数据包捕获安装tcpdump:在大多数Linux发行版中,tcpdump已......
  • 在Linux中,如何使用Nmap进行网络发现和安全扫描?
    Nmap(NetworkMapper)是一个强大的网络扫描和安全审计工具,它可以用于网络发现、安全扫描、端口扫描、服务和版本检测等多种用途。以下是使用Nmap进行网络发现和安全扫描的基本步骤和选项:1.网络发现基本的Ping扫描:使用Nmap发送Ping请求来发现网络上的活动主机。nmap-sn192.1......
  • Bootstrap-table 使用总结
    Bootstrap-table使用总结一、什么是Bootstrap-table?在业务系统开发中,对表格记录的查询、分页、排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有名的开源表格插件,在很多项目中广泛......
  • day12_我的Java学习笔记 (package包、权限修饰符_private+缺省+protected+public、fin
    1.包IDEA配置自动导包:2.权限修饰符同一个类中的,【private、缺省、protected、public】都可以访问同一个包中的其他类,【private】不可以访问,【缺省、protected、public】都可以访问不同包下的无关类,【private、缺省、protected】都不可以访问,只有【public......
  • subspace -linux-挂机
     ================subspace===farm=====会话方式=====================================#!/usr/bin/envbashscreen-dmSspc-farm/home/tuoluo/tool/subspace-farmer-ubuntu-x86_64-skylake-gemini-3h-2024-mar-29farm--reward-addressst7KWHjV2EGwbcYgsYM4jxJjQ6CKU......
  • 基于yolov2深度学习网络的螺丝螺母识别算法matlab仿真
    1.算法运行效果图预览 2.算法运行软件版本matlab2022a 3.算法理论概述      在工业自动化和质量控制领域,准确且高效的螺丝螺母识别至关重要。深度学习方法,特别是基于卷积神经网络(CNN)的目标检测技术,因其卓越的特征提取能力,成为解决此类问题的有效手段。YOLOv2......
  • Linux:zsh、bash切换
    转自:https://blog.csdn.net/u013250861/article/details/127794586背景由于新款Mac性价比走低,近期转为使用Windows作为主力开发系统。但是在开发过程中需要上Linux测试,或者说部署一些服务,例如MySQL,NexusOSS等。本人又是一个Docker重度依赖者。之前一直是长期在Windows下启动一......
  • 读《我和Labview》Labview编程基础3
    3字符串和路径数据3.1字符串数据类型3.2字符串控件3.3数值、时间与字符串之间的的转换3.3.1基础转换函数3.3.2字符串格式化3.3.3时间与字符串之间的转换3.4正则表达式3.5路径3.5.1路径数据3.5.2相对路径3.5.3路径常量3.5.4路径与其他数据类型的转换3.6数据平化3.6.1......
  • 配置linux系统代理,且验证是否配置成功
      配置linux系统代理是否成功验证方法在Linux系统中,配置代理的目的通常是为了访问网络资源。要验证代理配置是否成功,可以使用命令行工具如curl来测试网络连接。以下是一个简单的步骤来验证代理配置:打开终端。输入以下命令来设置环境变量,使用您的代理服务......
  • ETL工具-nifi干货系列 第十三讲 nifi处理器QueryDatabaseTable查询表数据实战教程
    1、处理器QueryDatabaseTable,该组件生成一个SQL查询,或者使用用户提供的语句,并执行它以获取所有在指定的最大值列中值大于先前所见最大值的行。查询结果将被转换为Avro格式,如下图所示: 本示例通过QueryDatabaseTable处理器连接数据库查询表数据,然后连接到LogMessage打印日志......