https://blog.csdn.net/qq_39399966/article/details/102576949

Step 1 — ab (apache benchmark) 安装

  • yum -y install httpd-tools

安装完后输入 ab -V 显示类似如下:

Step 2 — ab 测试的命令参数

参数说明:

  • -n  即requests,用于指定压力测试总共的执行次数。
  • -c  即concurrency,用于指定的并发数。
  • -t  即timelimit,等待响应的最大时间(单位:秒)。
  • -b  即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
  • -p  即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
  • -u  即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
  • -T  即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
  • -v  即verbosity,指定打印帮助信息的冗余级别。
  • -w  以HTML表格形式打印结果。
  • -i  使用HEAD请求代替GET请求。
  • -x  插入字符串作为table标签的属性。
  • -y  插入字符串作为tr标签的属性。
  • -z  插入字符串作为td标签的属性。
  • -C  添加cookie信息,例如:"Apache=1234"(可以重复该参数选项以添加多个)。
  • -H  添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
  • -A  添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
  • -P  添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
  • -X  指定使用的和端口号,例如:"126.10.10.3:88"。
  • -V  打印版本号并退出。
  • -k  使用HTTP的KeepAlive特性。
  • -d  不显示百分比。
  • -S  不显示预估和警告信息。
  • -g  输出结果信息到gnuplot格式的文件中。
  • -e  输出结果信息到CSV格式的文件中。
  • -r  指定接收到错误信息时不退出程序。
  • -h  显示用法信息,其实就是ab -help。

haml

Step 3 — ab 测试 PHP 网站

  • [root@daguanren ~]# ab -n1000 -c10 http://localhost/index.php
  • -n1000 表示总请求数为1000
  • -c10 表示并发用户数为10
  • http://localhost/index.php 表示这些请求的目标URL

测试结果一目了然,我们看到吞吐率显示 17258.34 reqs/s 。

接下来测试并发数为129个和500个用户的吞吐率变化情况。

可以看到并发数为129个时,吞吐率显示 18017.69 reqs/s 。再往后随着并发数的递增,吞吐率开始大幅下降,当并发数为500个时,吞吐率下降为 4780.30 reqs/s 。(实际130个并发数时,已经骤降到不到 5000 reqs/s 的吞吐率)。

如果是 POST 请求:

  • [root@daguanren ~]# cat postData.txt
  • name=daguanren&site=www.daguanren.cc
  • ab -n 1000 -c 100 -p postdata.txt -T application/x-www-form-urlencoded "http://localhost/index.php"

所以,并发数存在一个最优值可以使吞吐率达到最大。当并发数继续增加时,服务器的硬件配置无法跟上节奏,导致吞吐率骤降。

测试结果内容解释

Server Software:        nginx/1.10.2 (服务器软件名称及版本信息)
Server Hostname:        192.168.1.106(服务器主机名)
Server Port:            80 (服务器端口)
Document Path:          /index1.html. (供测试的URL路径)
Document Length:        3721 bytes (供测试的URL返回的文档大小)
Concurrency Level:      1000 (并发数)
Time taken for tests:   2.327 seconds (压力测试消耗的总时间)
Complete requests:      5000 (的总次数)
Failed requests:        688 (失败的请求数)
Write errors:           0 (网络连接写入错误数)
Total transferred:      17402975 bytes (传输的总数据量)
HTML transferred:       16275725 bytes (HTML文档的总数据量)
Requests per second:    2148.98 [#/sec] (mean) (平均每秒的请求数) 这个是非常重要的参数数值,服务器的吞吐量 
Time per request:       465.338 [ms] (mean) (所有并发用户(这里是1000)都请求一次的平均时间)
Time  request:       0.247 [ms] (mean, across all concurrent requests) (单个用户请求一次的平均时间)
Transfer rate:          7304.41 [Kbytes/sec] received 每秒获取的数据长度 (传输速率,单位:KB/s)

注意事项

测试机与被测试机要分开
不要对线上的服务器做压力测试
观察测试工具ab所在机器,以及被测试的前端机的CPU、内存、网络等都不超过最高限度的75%

最新文章

  1. GIT服务器的四种协议
  2. es6 新特性2
  3. dubbo 常见错误
  4. angular作用域分析
  5. fileinput
  6. commonjs amd cmd的区别
  7. WP8_访问ListBox中的Item项中的某个元素
  8. JSF学习四 标签
  9. C#中单问号,双问号的用法(转)
  10. java int and string convert
  11. docker的网络-Container network interface(CNI)与Container network model(CNM)
  12. Spring--Bean scope
  13. [ASP.NET MVC]笔记(三) 成员资格、授权和安全性
  14. 以太坊智能合约虚拟机(EVM)原理与实现
  15. mongodb突然出现不是内外部命令或可执行
  16. awd入门教程
  17. 前端测试框架jest 简介
  18. day 30 1.操作系统原理 2. Process 模块学习
  19. oracle基础语句学习
  20. Several Service Control Manager Issues (Event ID's 7000, 7009, 7011)

热门文章

  1. AOP中环绕通知的写法
  2. ActiveMQ(一)——简介
  3. Android工具 - 随机测试(猴子)
  4. 祭出“成本”列(Project)
  5. 什么是甘特图(Project)
  6. 极简!一个注解就能创建Jaeger的Span
  7. LuoguP7222 [RC-04] 信息学竞赛 题解
  8. Python 计算AWS4签名,Header鉴权与URL鉴权
  9. Protobuf 动态加载 .proto 文件并操作 Message
  10. 【LeetCode】398. Random Pick Index 解题报告(Python & C++)