压力测试工具: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测试工具是不能够判断数据是否异常的

目录
相关文章
|
8天前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
39 6
|
1月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
469 10
|
2月前
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
3月前
|
数据可视化 测试技术 Go
Go 语言测试与调试:`go test` 工具用法
`go test` 是 Go 语言内置的测试工具,支持单元测试、基准测试、示例测试等功能。本文详解其常用参数、调试技巧及性能测试命令,并提供实际项目中的应用示例与最佳实践。
|
3月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
732 23
|
2月前
|
人工智能 数据可视化 测试技术
UAT测试排程工具深度解析:让验收测试不再失控,项目稳稳上线
在系统交付节奏加快的背景下,“测试节奏混乱”已成为项目延期的主因之一。UAT测试排程工具应运而生,帮助团队结构化拆解任务、清晰分配责任、实时掌控进度,打通需求、测试、开发三方协作闭环,提升测试效率与质量。本文还盘点了2025年热门UAT工具,助力团队选型落地,告别靠表格和群聊推进测试的低效方式,实现有节奏、有章法的测试管理。
|
3月前
|
弹性计算 JavaScript Ubuntu
WebSocket协议相关的测试命令工具使用简介
本文介绍了针对WebSocket的测试工具wscat和websocat的基本使用方法,以及通过curl命令测试HTTP/HTTPS协议的方式。对于WebSocket,直接使用curl测试较为复杂,推荐使用wscat或websocat。文中详细说明了这两种工具的安装步骤、常用参数及连接示例,例如在ECS上开启8080端口监听并进行消息收发测试。此外,还提供了curl命令的手动设置头部信息以模拟WebSocket握手的示例,但指出curl仅能作为客户端测试工具,无法模拟服务器。
729 4
|
5月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
670 24
|
6月前
|
JSON 测试技术 网络安全
Apifox工具让我的 Socket.IO 测试效率翻倍
用了 Apifox 测试 Socket.IO 后,我整个人都升级了!不仅操作简单到令人发指,功能还贼全面,真的是 提升开发效率的神器 !
|
9月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
566 17
Selenium:强大的 Web 自动化测试工具

热门文章

最新文章

推荐镜像

更多