压力测试之Apache ab

Nita ·
更新时间:2024-11-13
· 952 次阅读

一 压力测试的概念

吞吐率(Requests per second)
概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
Request per second = Complete requests / Time taken for tests

并发连接数(The number of concurrent connections)
概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。

并发用户数(The number of concurrent users,Concurrency Level)
概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。

用户平均请求等待时间(Time per request)
计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)

服务器平均请求等待时间(Time per request: across all concurrent requests)
计算公式:处理完成所有请求数所花费的时间 / 总请求数,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也=用户平均请求等待时间/并发用户数,即
Time per request / Concurrency Level

测试工具有Apache ab ,jmeter 等 这里 说一说Apache ab

二 Apache ab 1. 安装

linux直接yum -y install httpd-tools,然后ab -V测试
windows:

下载并安装
https://www.apachehaus.com/cgi-bin/download.plx

查看80 443 端口有没有被占用,然后kill掉
netstat -ano | findstr “80”
netstat -aon|findstr “443”
tasklist |findstr “进程id”
taskkill /f /t /im “进程id”(用管理员)

注意,要用管理员才能杀掉。。。

修改配置文件
找到安装目录下的httpd.conf

修改为自己的安装目录在这里插入图片描述

让apache服务器以windows服务的方式运行
进入 bin目录下 cmd 然后 httpd.exe 就可以了
如果启动报下面这个错误,是因为配置文件问题,需要参照第三步修改在这里插入图片描述 访问localhost,就可以看到页面
在这里插入图片描述 2.ab -help参数解释

-n即requests,用于指定压力测试总共的执行次数。
-c即concurrency,用于指定压力测试的并发数。
-t即timelimit,等待响应的最大时间(单位:秒)。
-b即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
-v即verbosity,指定打印帮助信息的冗余级别。
-w以HTML表格形式打印结果。
-i使用HEAD请求代替GET请求。
-x插入字符串作为table标签的属性。
-y插入字符串作为tr标签的属性。
-z插入字符串作为td标签的属性。
-C添加cookie信息,例如:“Apache=1234”(可以重复该参数选项以添加多个)。
-H添加任意的请求头,例如:“Accept-Encoding: gzip”,请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-P添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
-X指定使用的代理服务器和端口号,例如:“126.10.10.3:88”。
-V打印版本号并退出。
-k使用HTTP的KeepAlive特性。
-d不显示百分比。
-S不显示预估和警告信息。
-g输出结果信息到gnuplot格式的文件中。
-e输出结果信息到CSV格式的文件中。
-r指定接收到错误信息时不退出程序。
-h显示用法信息,其实就是ab -help。

3. 测试实例

进入bin目录 cmd
输入:ab -n 1000 -c 500 http://localhost:8080/incr

在这里插入图片描述
测试结果指标说明(常用的)

Concurrency Level 并发数多少,等于-c后面的数值 Time taken for tests 测试总耗时 Complete requests 成功收到返回的数目 Failed requests 请求失败数目,可能因为网络连接,异常,请求数据长度等等 Non-2xx responses 表示返回的HTTP status code不是2xx的数目(比如404,401,500…),如果都是2xx,这个指标不显示在结果里面 Requests per second 每秒请求数,等于总请求数/测试总耗时 Time per request 每一个请求平均花费时间。第一个Time per request等于concurrency * timetaken * 1000 / done,第二个Time per request(mean, across all concurrency requests)等于timetaken * 1000 / done,第一个可以理解为用户平均请求等待时间,第二可以理解为服务器平均请求等待时间

Jmeter 我这里就不多介绍了
参考我这篇文章:
https://blog.csdn.net/sdaujsj1/article/details/95974796


作者:周杰伦本人



压力 ab 压力测试 Apache 测试

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章