本文大纲
《如何做性能测试》
Apache的ab
Apache的ab的介绍
Apache ab 是 Apache HTTP Server自带的性能测试工具 ab 是一个简单的命令行接口程序,用于对服务器进行压力测试。
- 特点:
- 快速轻量级,易于使用和集成到CI/CD流程中。
- 支持HTTP方法如GET、POST等。
- 输出详细的统计信息包括请求的吞吐量和响应时间。
Apache ab(Apache Bench)是一个命令行工具,用于对Web服务器进行压力测试和基准测试。它是Apache HTTP服务器附带的一个简单易用的HTTP压力测试工具。尽管其名称中包含“bench”,但它的功能更为全面,可以用来评估一个网站或Web应用在高并发请求情况下的性能表现。
Apache ab 是一个功能强大且易于使用的HTTP基准测试工具,特别适合用于快速评估Web服务器在不同负载条件下的性能表现。尽管它有一些限制和简单的输出格式,但对于大多数基本的压力测试需求来说已经足够,并且能够帮助开发者优化他们的网站或应用的响应速度和稳定性。
Apache的ab的安装
ab测试工具是Apache HTTP Server 服务器带的一个简单易用的http压力测试工具,当安装了apache时就会自带ab。
但我不想Apache HTTP Server ,只想单独安装ab测试工具。
下为以CentOS系统例,单独安装ab测试命令。
先安装安装依赖包
ab运行需要依赖apr-util包,若没有需要先安装,查看apr-util, yum-utils是否安装:
- yum install apr-util
- yum install yum-utils

若在命令执行后有结果列出(如上),则说明已安装。
若未安装,则用yum安装依赖:
- $sudo yum -y install apr-util
- $sudo yum -y install yum-utils
再安装ab
- cd /opt
- mkdir /opt/ab #建个临时目录来保存下载的安装包
- cd ab
- yum install yum-utils.noarch
- yumdownloader httpd-tools*
- rpm2cpio httpd-*.rpm | cpio -idmv
- ll usr/bin/ab
- cp /opt/ab/usr/bin/ab /usr/bin/
安装完成。
删除下载的其他内容,可删除整个/opt/ab目录.
Apache的ab的使用
查看版本信息 : ab -V

基本语法
ab [options] http://hostname/path
常用选项 :
-n requests: 总请求数量。-c concurrency: 并发请求数量(同时运行的请求数)。-t seconds: 在超时前发送请求的最大秒数。-p postfile: 从文件中读取POST数据(仅在使用POST方法时需要)。-T content_type: 设置请求内容类型,默认为 “application/x-www-form-urlencoded”。
基本测试
发送10个并发请求数,每个页面进行10次访问:
ab -n 100 -c 10 http://example.com/
使用POST数据测试
假设有一个名为 data.txt 的文件包含POST请求的数据:
echo "param1=value1¶m2=value2" > data.txt
ab -n 10 -c 5 -p data.txt http://example.com/post-endpoint
Apache的ab使用案例
本案例演示了ab的基本使用方法,同时还演示了网络带宽成为限制因素,从而没有测得目标网站真实性能上限的情况。
ab -n 100 -c 5 http://xxxx/
- -c concurrency 并发数,同时有几个并发请求
- -n requests 请求的总次数

注意:上图中的测试是在100Mb公共网络条件做的,网络吞吐量已达上限10363.70 [Kbytes/sec](100Mb=12.5MB),网络已成为本次测试的瓶颈点,所以得出的37.77的QPS不是目标网站真实性能上限。
- 资源耗尽或瓶颈出现: (但系统资源已耗尽或达到上限值则应停止测试。若强行继续测试,所取得的测试数据是没有变化也没有意义的。)
- CPU使用率达到上限,处理能力受限。
- 内存不足甚至发生内存泄漏现象。
- 网络带宽成为限制因素。【本例就是这种情况】
- 磁盘I/O达到峰值,性能显著下降。
- 为100Mb网的最大传输速度是12.5MB?因为b是“位”,B是字节,8位=1字节,所以8b=1B,也叫8小b=1大B。所以100Mb=12.5MB。