本文大纲

《如何做性能测试》

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

image2024-12-30_18-41-45.png

若在命令执行后有结果列出(如上),则说明已安装。

若未安装,则用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

image2024-12-30_18-53-22.png

基本语法

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&param2=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  请求的总次数

image2024-12-29_12-20-24.png

注意:上图中的测试是在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。