httpd之ab压力测试

开始测试

cd xxxxxxxxxApachein
ab -n 800 -c 800 http://127.0.0.1/phpinfo.php (-n发出800个请求,-c模拟800并发,相当800人同时访问,后面是测试url)
ab -t 60 -c 100 http://127.0.0.1/phpinfo.php 在60秒内发请求,一次100个请求。
-n在测试会话中所执行的请求个数。默认时,仅执行一个请求。
-c一次产生的请求个数。默认是一次一个。
-t测试所进行的最大秒数。其内部隐含值是-n 50000,它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-p包含了需要POST的数据的文件。
-P对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-T POST数据所使用的Content-type头信息。
-v设置显示信息的详细程度-4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。
-V显示版本号并退出。
-w以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-i执行HEAD请求,而不是GET。
-x设置<table>属性的字符串。
-X对请求使用代理服务器。
-y设置<tr>属性的字符串。
-z设置<td>属性的字符串。
-C对请求附加一个Cookie:行。其典型形式是name=value的一个参数对,此参数可以重复。
-H对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对(如,"Accept-Encoding:zip/zop;8bit")。
-A对服务器提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即,是否发送了401认证需求代码),此字符串都会被发送。
-h显示使用方法。
-d不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。
-e产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。
-g把所有测试结果写入一个'gnuplot'或者TSV(以Tab分隔的)文件。此文件可以方便地导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行为标题。
-i执行HEAD请求,而不是GET。
-k启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。
-q如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此-q标记可以抑制这些信息

测试结果分析

 这段展示的是web服务器的信息,可以看到服务器采用的是Tengine,域名是kaoshi.fgf168.top,端口是80

 这段是关于请求的文档的相关信息,所在位置“/index.php”,文档的大小为1332 bytes(此为http响应的正文长度)

 这段展示了压力测试的几个重要指标

  • Concurrency Level: 1000 ==>并发请求数
  • Time taken for tests: 101.770 seconds ==>整个测试持续的时间
  • Complete requests: 999 ==>完成的请求数
  • Failed requests: 0 ==>失败的请求数
  • Total transferred: 1510488 bytes ==>整个场景中的网络传输量
  • HTML transferred: 1330668 bytes ==>整个场景中的HTML内容传输量
  • Requests per second: 9.82 [#/sec] (mean) ==>吞吐率,大家最关心的指标之一,相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值
  • Time per request: 101872.241 [ms] (mean) ==>用户平均请求等待时间,大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值
  • Time per request: 101.872 [ms] (mean, across all concurrent requests) ==>服务器平均请求处理时间,大家最关心的指标之三
  • Transfer rate: 14.49 [Kbytes/sec] received ==>平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

这段表示网络上消耗的时间的分解

 这段是每个请求处理时间的分布情况,50%的处理时间在50864ms内,66%的处理时间在50990ms内…,重要的是看**90%**的处理时间。

POST传参数的步骤: 

1,新建一个文件,里面放入POST参数。

注意,这个承载POST参数的文件,不依赖于后缀名。可跨平台(比如 Linux 下用 vi 建立的文件,win下也可以用)

POST文本内容如下:

id=1&password=123456

我把这个文本保存成 postdata.txt ,放到了win机器下的 E盘 下。

2,使用ab命令

win如下下:

D:PhpStudy2018phpstudyPHPTutorialApachein>ab -t 10 -c 100 -p E:postdata.txt -T application/x-www-form-urlencoded http://www.fgf168.top/home/getuserinfo

参考:https://cloud.tencent.com/developer/article/1572262

      https://blog.csdn.net/chenggong2dm/article/details/51850923

原文地址:https://www.cnblogs.com/clubs/p/13885271.html