压力测试工具:apache bench(ab)

简介: 压力测试工具:apache bench(ab)

作为php后端工程师,除了实现业务需求之外,需要考虑的就是自己写的服务,在大并发下是否能正常运行了,例如在我之前文章讲到的,在并发下,数据库查询可能会造成脏读幻读等情况,导致业务不正常.

但是,在一般开发情况下,没那么多大并发情况让你测试,那该怎么办呢?

这时候,我们就可以用到apache的压力测试工具了,apache bench简称ab

安装

linux

yum -y install httpd-tools  //centos
 apt-get install apache2-utils //ubuntu
 ab -V #查看版本

windows

windows只需要安装apache,就自带ab工具

image.png

简单使用

通过命令:

ab -c1000 -n100000 http://127.0.0.1/

可向目标地址发送 100000次请求,并发数为1000

\[root@localhost ~\]# ab -c100 -n10000 http://127.0.0.1:9501/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests  //已经完成的请求数
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software:        EasySwoole   #服务器名
Server Hostname:        127.0.0.1  #请求的URL主机名
Server Port:            9501 #端口号
Document Path:          / #请求路径
Document Length:        44 bytes #响应数据长度
Concurrency Level:      100  #并发数,我们自己设置的-c参数
Time taken for tests:   0.629 seconds  #请求完成时间
Complete requests:      10000 #完成请求数
Failed requests:        0 #错误请求数
Write errors:           0 #写入错误次数
Total transferred:      2050000 bytes #请求长度总和
HTML transferred:       440000 bytes #html响应总长度(去除了响应头的长度)
Requests per second:    15909.13 \[#/sec\] (mean) #每秒处理的请求数
Time per request:       6.286 \[ms\] (mean) #用户平均请求等待时间
Time per request:       0.063 \[ms\] (mean, across all concurrent requests) #服务器平均处理时间
Transfer rate:          3184.93 \[Kbytes/sec\] received  #带宽传输速度
Connection Times (ms)  #连接处理时间
              min  mean\[+/-sd\] median   max
Connect:        0    1   1.3      1      51
Processing:     0    5   5.6      4      56
Waiting:        0    4   5.5      3      55
Total:          0    6   5.8      5      57
Percentage of the requests served within a certain time (ms) 
  50%      5  #50%的请求在5ms内返回
  66%      6
  75%      6
  80%      7
  90%      8
  95%     10
  98%     24
  99%     36  #99%的请求在36ms内返回
 100%     57 (longest request)
\[root@localhost ~\]#

通过ab命令测试,将会输出以上的数据,通过上面的数据可分析出服务器响应情况,并发处理能力,尤其是Requests per second 参数,它确定了服务器的秒并发能力

ab常用参数配置

命令格式


ab \[-命令命令参数\] 请求地址

最后的请求地址不能直接为单域名(http://www.php20.cn) 必须再增加一个/ http://www.php20.cn/

-n _ //本次测试发起的总请求数_

-n10000 代表本次测试发起10000个请求

-c 请求并发数


-c1000 代表每次都同时发起1000次请求,也就是并发数为1000

-t 本次测试的最大秒速,默认没有限制


-t2 代表2秒后就结束测试

-s 每次请求的超时时间,默认为30


-s30 代表每个请求如果超时30秒,则直接代表该请求超时

-p 包含需要post的文件地址,和-T一起使用


例如:

新增文件post.txt:

name=tioncico&password=123456

请求:

ab -c100 -n10000 -p post.txt -T "application/x-www-form-urlencoded"  http://127.0.0.1:9501/

-T 设置content-type 上面有讲到

-v  显示请求的显示详细程度,默认是只显示上面已完成请求数等

默认值为1,只显示请求的总统计

2 显示响应头,响应数据,并包含1的显示

3 显示响应状态码,并包含2的显示

4 (本人没发现和3有啥区别,听说会显示更多信息)

-C 添加cookie

-C "cookie1=cookie1,cookie2=cookie2"

-w 以html表格的元素显示ab的测试结果:

image.png

其他

通过上面的一些参数配置,我们可以通过设置cookie,去模拟用户登录情况,用于测试用户登录后的并发压力测试

也可以通过-p配置,去上传post数据,用于测试表单提交等压力测试

总的来说,ab压力测试工具只能简单测试一些请求接口,但是并不能实现复杂的测试条件判断,例如post数据异常,ab测试工具是不能够判断数据是否异常的

目录
相关文章
|
26天前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
19天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
122 17
Selenium:强大的 Web 自动化测试工具
|
29天前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
42 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
1月前
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
51 2
|
1月前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
1月前
|
安全 网络协议 关系型数据库
最好用的17个渗透测试工具
渗透测试是安全人员为防止恶意黑客利用系统漏洞而进行的操作。本文介绍了17款业内常用的渗透测试工具,涵盖网络发现、无线评估、Web应用测试、SQL注入等多个领域,包括Nmap、Aircrack-ng、Burp Suite、OWASP ZAP等,既有免费开源工具,也有付费专业软件,适用于不同需求的安全专家。
193 2
|
1月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
|
1月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
79 1
|
2月前
|
jenkins 测试技术 持续交付
提升软件测试效率的实用技巧与工具
【10月更文挑战第12天】 本文将深入探讨如何通过优化测试流程、引入自动化工具和持续集成等策略,来显著提高软件测试的效率。我们将分享一些实用的技巧和工具,帮助测试人员更高效地发现和定位问题,确保软件质量。
74 2
|
2月前
|
测试技术
黑盒功能测试工具UFT的使用
黑盒功能测试工具UFT的使用
43 0
黑盒功能测试工具UFT的使用

推荐镜像

更多