ApacheBench(ab)是Apache服务器自带的一个web压力测试工具,简称ab,ab本身是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力或者在开发过程中验证接口在不同并发场景下的运行情况,总体来说ab体量小,使用简单,可提供基本的数据分析接口在不同压力下的表现情况。
以下是Windows环境下Apache服务器压力测试的具体步骤:
首次使用
1. Apache Bench下载安装
首先需要去官网下载Apache服务器,下载地址:官网下载地址,这里我选择的是2.4.51,如下图,下载完成后解压我们能得到一个名为Apache24的文件夹,下一步就是修改一配置文件。
修改配置文件(Apache24\conf\httpd.conf),打开这个httpd.conf,修改Define SRVROOT地址为本地实际路径如图,改为Apache24文件夹的实际存放位置,这里需要注意的是建议路径中不要有中文,我在尝试的时候由于路径中有中文,后续服务安装不了,去掉了就可以。
管理员身份打开一个命令窗口,切换目录(Apache24\bin),执行命令,插图是我本机,因为已经安装过了 ./httpd.exe k install。
服务安装完毕后需要启动一下服务,win+R,输入services.msc 回车,找到Apache2.4服务,启动它,至此环境准备完成。
2. 参数详解
打开一个CMD切换目录到(Apache24\bin),执行命令 ./ab.exe h,会得到如下帮助:
n即requests,用于指定压力测试总共的执行次数
c即concurrency,用于指定压力测试的并发数
t即timelimit,等待响应的最大时间(单位:秒)(这里我理解的是一个最长基准线时间,而不是timeout那种相应超过最长时间后即断开连接的限制)
s是timeout,等待相应的最长时间(单位:秒,默认30秒)
p即postfile,发送POST请求时需要上传的文件,此外还必须设置T参数
H添加任意的请求头,“ContentLength: 0”
3. 第一次GET请求测试
发起测试命令,这里有一个注意点 这里需要注意的是Complete requests不能小于Concurrency Level(n 不能小于 c),具体原因,留个小疑问各位思考尝试一下(尝试一下会有明确异常提示)。./ab.exe n 10 c 2 "http://www.apache.org/"。
4. 第一次POST请求测试
发起测试命令,post请求稍微有些不同,需要文件内定义请求体,parm.txt,后边跟格式,H是header参数 ./ab.exe n 10 c 2 p F:/Apache24/htdocs/parm.txt T "application/json" H "PK:9937" r "*(此处是地址)"。
测试结果分析
$ ./ab.exe n 10 c 2 "http://www.apache.org/"
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.apache.org (be patient).....done
Server Software: Apache(被调用的服务器用的软件信息)
Server Hostname: www.apache.org(目标主机名)
Server Port: 80(访问目标端口)
Document Path: /(具体请求路径或者说文件路径)
Document Length: 73488 bytes(请求文件的大小)
Concurrency Level: 2(并发数)
Time taken for tests: 3.140 seconds(此次执行测试调用总耗时)
Complete requests: 10(此次测试总共发起请求次数)
Failed requests: 0 (失败的请求次数)
Total transferred: 739910 bytes (总共传输的数据量,指的是ab从被测服务器接收到的总数据量)
HTML transferred: 734880 bytes (从服务器接收到的html文件的总大小)
Requests per second: 3.18 [#/sec] (mean) (平均(mean)每秒完成的请求数,Complete requests/Time taken for tests,10/3.140=3.18)
Time per request: 628.047 [ms] (mean) (此并发情况下每个用户感觉到的请求时间,也就是说服务器处理一批并发的时间)
Time per request: 314.024 [ms] (mean, across all concurrent requests)(此并发情况下平均每个请求的时间,理论来这个数*并发数应该约等于上一个值)。
相关问答FAQs
问:什么是ApacheBench?
答:ApacheBench(简称ab)是Apache HTTP服务器自带的一个web压力测试工具,它是一个命令行工具,通过创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问,从而测试目标服务器的负载压力或验证接口在不同并发场景下的运行情况,ab体量小,使用简单,能够提供基本的数据分析接口在不同压力下的表现情况。
问:如何进行Apache服务器的压力测试?
答:在Windows环境下进行Apache服务器的压力测试,首先需要下载并安装Apache服务器及ApacheBench,通过修改配置文件确保Apache服务器正确安装并启动,在命令行中切换到ApacheBench所在的目录,并使用ab命令进行压力测试,可以通过调整n(请求次数)、c(并发数)等参数来设置不同的测试场景,分析测试结果,包括服务器信息、请求耗时、数据传输速率等,以评估服务器的性能表现。
序号 | 测试因素 | 描述 | 备注 |
1 | 测试软件 | ApacheBench (ab) 或 JMeter 等 | ApacheBench 是Apache自带的一个压力测试工具,JMeter 是一个功能强大的压力测试工具 |
2 | 服务器硬件配置 | CPU、内存、硬盘等 | 服务器硬件配置越高,承受的压力越大 |
3 | 服务器操作系统 | Windows Server、Linux 等 | 不同的操作系统对Apache的优化程度不同 |
4 | Apache版本 | Apache 2.2、2.4、2.4.29 等 | 不同的Apache版本性能差异较大 |
5 | 虚拟主机配置 | 虚拟主机数量、域名解析等 | 虚拟主机配置对Apache性能有一定影响 |
6 | 网络带宽 | 服务器与客户端之间的网络带宽 | 网络带宽是影响压力测试结果的关键因素之一 |
7 | 网络延迟 | 服务器与客户端之间的网络延迟 | 网络延迟会影响测试结果 |
8 | 请求类型 | GET、POST、PUT 等 | 不同的请求类型对Apache性能的影响不同 |
9 | 请求参数 | 请求参数的数量和类型 | 请求参数会影响Apache处理请求的速度 |
10 | 请求并发数 | 同时发起的请求数量 | 请求并发数越高,测试结果越能反映Apache的极限性能 |
11 | 测试时间 | 测试持续的时间 | 测试时间越长,测试结果越可靠 |
12 | 压力测试结果 | 服务器响应时间、吞吐量、并发连接数等 | 根据测试结果,评估Apache的性能和稳定性 |