开始测试
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