首页 > 系统 > Linux > 正文

利用ab压力工具对服务器进行压力测试

2024-08-27 23:59:06
字体:
来源:转载
供稿:网友

ab是一款压力测试功能了,我们可以模仿用户实质性的访问网页从而可以测试出网站并发能力与数据处理能力了,下面小编为各位介绍ab压力工具对服务器进行压力测试的一个例子.

在使用之前,需要先确认是否服务器安装了Apache Http Server,如果没有安装,则需要先安装:

  1. $ sudo yum install httpd 
  2. $ ab -V 
  3. This is ApacheBench, Version 2.3 <$Revision: 1430300 $> 
  4. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 
  5. Licensed to The Apache Software Foundation, http://www.apache.org/ 

下面是对ab工具比较常用的一些参数的解释.

  1. aicode:~ mylxsw$ ab -h 
  2. Usage: ab [options] [http[s]://]hostname[:port]/path 
  3. Options are: 
  4.     -n requests     要执行的请求数量 
  5.     -c concurrency  并发请求数量 
  6.     -b windowsize   TCP发送/接收缓冲区大小,单位所以byte 
  7.     -p postfile     指定POST发送的数据文件,不要忘记设置-T参数 
  8.     -u putfile      指定PUT发送的数据文件,不要忘记设置-T参数 
  9.     -T content-type 使用POST/PUT发送数据时,指定Content-type请求头,例如. 
  10.                     'application/x-www-form-urlencoded' 
  11.                     默认是 'text/plain' 
  12.     -w              以HTML表格的形式输出结果 
  13.     -i              请求方式使用HEAD代替GET 
  14.     -C attribute    添加Cookie,例如'Apache=1234'. (可以重复设置) 
  15.     -H attribute    添加任意的请求Header,例如. 'Accept-Encoding: gzip'(可重复设置) 
  16.     -A attribute    添加基本的WWW认证信息,这个属性是用英文逗号分隔的用户名和密码 
  17.     -P attribute    添加代理服务器认证信息,使用逗号分隔用户名和密码 
  18.     -X proxy:port   指定代理服务器的地址和端口号 
  19.     -k              使用HTTP的KeepAlive特性 
  20.     -r              当Socket收到错误信息时不要退出. 
  21.     -Z ciphersuite  指定SSL/TLS加密套件 
  22.     -f protocol     指定SSL/TLS协议(SSL2, SSL3, TLS1 or ALL) 
  23.     ... 

假如我们需要对http://letv.com进行压力测试,指定请求总数为100,并发用户数为10,我们可以以下面的方式进行测试.

  1. $ ab -n 100 -c 10 http://letv.com/ 
  2. This is ApacheBench, Version 2.3 <$Revision: 1430300 $> 
  3. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 
  4. Licensed to The Apache Software Foundation, http://www.apache.org/ 
  5. Benchmarking letv.com (be patient).....done 
  6.  
  7. Server Software:        nginx/1.2.1 
  8. Server Hostname:        letv.com 
  9. Server Port:            80 
  10. Document Path:          / 
  11. Document Length:        184 bytes 
  12. Concurrency Level:      10 
  13. Time taken for tests:   0.396 seconds 
  14. Complete requests:      100 
  15. Failed requests:        0 
  16. Write errors:           0 
  17. Non-2xx responses:      100 
  18. Total transferred:      37300 bytes 
  19. HTML transferred:       18400 bytes 
  20. Requests per second:    252.29 [#/sec] (mean) 
  21. Time per request:       39.637 [ms] (mean) 
  22. Time per request:       3.964 [ms] (mean, across all concurrent requests) 
  23. Transfer rate:          91.90 [Kbytes/sec] received 
  24. Connection Times (ms) 
  25.               min  mean[+/-sd] median   max 
  26. Connect:        4    5   0.9      5       8 
  27. Processing:     4   33  87.4      6     312 
  28. Waiting:        4   33  87.3      5     311 
  29. Total:          9   39  87.6     12     317 
  30. Percentage of the requests served within a certain time (ms) 
  31.   50%     12  //Vevb.com 
  32.   66%     12 
  33.   75%     13 
  34.   80%     14 
  35.   90%     15 
  36.   95%    316 
  37.   98%    317 
  38.   99%    317 
  39.  100%    317 (longest request) 

需要注意的几个字段是:

Requests per second 吞吐率(reqs/s),该字段值为252.29,该值表明了服务器每秒能够处理的请求数量.

Time per request 平均请求处理时间,可以看到,该字段分为两行,有两个不同的值,代表了处理每隔请求所需要的时间,但是第一行的值是第二行的10倍,这是因为我们指定的并发数量为10,第一行为每次并发请求的平均耗时,第二行为每隔请求的耗时,因此,第一行值为第二行的值乘上并发请求数量,可以尝试将并发数改为20,这样就会看到第一行是第二行的20倍.

Transfer rate 每秒从服务器获取的数据的长度,上面的介绍的是linux中,下面来看看Windows环境下Apache服务器压力测试工具ab使用说明.

在Apache服务器自带了一个测试程序Ab.exe可以很方便的使用,进入cmd,之后进入ab.exe的目录,命令是 ab -c 请求数 -n 线程数 网址(建议输入目标网页.

线程数不宜过大 按照你电脑的承受能力,例:ab -n 10 -c 10 http://192.168.1.3/index.html

结果如下:

  1. D:Apachebin>ab -n 10 -c 10 http://192.168.1.3/index.html  
  2. (以上是输入的命令) 
  3. Benchmarking 192.168.1.3 (be patient).....done  
  4. Server Software:        Apache/2.0.63  
  5. (目标服务器Apache版本号) 
  6. Server Hostname:        192.168.1.3  
  7. (目标服务器主机头名称) 
  8. Server Port:            80  
  9. (目标服务器Apache端口) 
  10. Document Path:          /index.html  
  11. (目标网页相对地址) 
  12. Document Length:        292 bytes  
  13. (目标网页大小) 
  14. Concurrency Level:      10  
  15. (并发线程数) 
  16. Time taken for tests:   0.140625 seconds  
  17. (使用时间) 
  18. Complete requests:      10  
  19. (成功的请求数量) 
  20. Failed requests:        0  
  21. (失败的请求数量) 
  22. Write errors:           0  
  23. (发生错误数量) 
  24. Total transferred:      5750 bytes  
  25. (全部使用的流量) 
  26. HTML transferred:       2920 bytes  
  27. (Html文件使用的流量) 
  28. Requests per second:    71.11 [#/sec] (mean)  
  29. (指标一 平均每秒请求数) 
  30. Time per request:       140.625 [ms] (mean)  
  31. (指标二 平均事务响应时间) 
  32. Time per request:       14.063 [ms] (mean, across all concurrent requests)  
  33. (每秒请求时间) 
  34. Transfer rate:          35.56 [Kbytes/sec] received  
  35. (传输速率) 
  36. Connection Times (ms)  
  37.              min  mean[+/-sd] median   max  
  38. Connect:        0    0   0.0      0       0  
  39. Processing:   109  124  16.3    140     140  
  40. Waiting:      109  124  16.3    140     140  
  41. Total:        109  124  16.3    140     140  
  42. (所有请求的响应情况) 
  43. Percentage of the requests served within a certain time (ms)  
  44. 50%    140  
  45. 66%    140  
  46. 75%    140  
  47. 80%    140  
  48. 90%    140  
  49. 95%    140  
  50. 98%    140  
  51. 99%    140  
  52. 100%    140 (longest request) 

每个请求都有一个响应时间,比如 其中 50% 的用户响应时间小于 140 毫秒,最大的响应时间小于 140 毫秒(100% 处).

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表