简单模拟一下ab压力测试

Posted hfdp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单模拟一下ab压力测试相关的知识,希望对你有一定的参考价值。

在学习ab工具之前,我们需了解几个关于压力测试的概念

吞吐率(Requests per second)
概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
Request per second = Complete requests / Time taken for tests

并发连接数(The number of concurrent connections)
概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。

并发用户数(The number of concurrent users,Concurrency Level)
概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。

用户平均请求等待时间(Time per request)
计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)

服务器平均请求等待时间(Time per request: across all concurrent requests)
计算公式:处理完成所有请求数所花费的时间 / 总请求数,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也=用户平均请求等待时间/并发用户数,即
Time per request / Concurrency Level

简单了解下ab

ab全程是apache benchmark,是apache官方推出的一个工具,创建多个并发访问线程,模拟多个访问者同时对一个URL地址进行访问。它的测试目标是基于URL的,因此它既可以来测试apache的负载压力,也可以测试nginx等服务器的压力。

ab压力测试需要注意哪些?

测试的注意事项:
测试机器与被测试机器要分开,别在同一台机器上测试,否则结果是不准确的
不要对线上的服务器做测试,否则挂了就不好了哦。
观察测试工具ab所在的机器,以及被测试的前端机器的CPU,内存,网络等都不超过最高限度的75%。

下面测试下,两台服务器。

192.168.136.135  作为被测试的WEB服务器

192.168.136.148  作为ab测试的服务器

首先确保ab测试服务器安装ab,使用以下命令yum安装

  1.  yum -y install httpd-tools
  2.   查看信息:ab -V

安装完成之后,执行ab命令,返回一些帮助信息,确保安装成功

技术图片

访问以下被测试的服务器,确保正常

技术图片

执行下面的命令进行测试

ab -c 100 -n 5000 http://192.168.136.135/phpinfo.php      //模拟100个并发数,总共访问5000次

返回的结果

  1.  This is ApacheBench, Version 2.3 <$Revision: 655654 $>
  2.  Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  3.  Licensed to The Apache Software Foundation, http://www.apache.org/
  4.  
     
  5.  Benchmarking 192.168.136.135 (be patient)
  6.  Completed 500 requests
  7.  Completed 1000 requests
  8.  Completed 1500 requests
  9.  Completed 2000 requests
  10.  Completed 2500 requests
  11.  Completed 3000 requests
  12.  Completed 3500 requests
  13.  Completed 4000 requests
  14.  Completed 4500 requests
  15.  Completed 5000 requests
  16.  Finished 5000 requests
  17.  
     
  18.  
     
  19.  Server Software: nginx //被测试的服务器是Nginx
  20.  Server Hostname: 192.168.136.135 //Hostname
  21.  Server Port: 80 //端口
  22.  
     
  23.  Document Path: /phpinfo.php //path
  24.  Document Length: 96660 bytes //文档大小
  25.  
     
  26.  Concurrency Level: 100 //100个并发
  27.  Time taken for tests: 11.860 seconds //时间花费
  28.  Complete requests: 5000 //请求了5000次
  29.  Failed requests: 486 //失败了486次
  30.  (Connect: 0, Receive: 0, Length: 486, Exceptions: 0)
  31.  Write errors: 0
  32.  Total transferred: 484274801 bytes //整个场景中的网络传输量
  33.  html transferred: 483509342 bytes ///整个场景中的HTML内容传输量
  34.  Requests per second: 421.60 [#/sec] (mean) //QPS值,不高 吞吐率,大家最关心的指标之一,相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值
  35.  Time per request: 237.194 [ms] (mean) ///用户平均请求等待时间,大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值
  36.  Time per request: 2.372 [ms] (mean, across all concurrent requests) //服务器平均请求处理时间,大家最关心的指标之三
  37.  Transfer rate: 39876.53 [Kbytes/sec] received //平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
  38.  
     
  39.  Connection Times (ms)
  40.  min mean[+/-sd] median max
  41.  Connect: 0 1 1.3 1 13
  42.  Processing: 45 234 44.2 231 540
  43.  Waiting: 23 187 40.7 182 442
  44.  Total: 47 235 44.0 232 540
  45.  
     
  46.  Percentage of the requests served within a certain time (ms)
  47.  50% 232 //这是每个请求处理的时间分布情况,平均页面的响应时间是232毫秒以内,66%的在238毫秒以内,主要看90%的处理时间
  48.  66% 238
  49.  75% 243
  50.  80% 247
  51.  90% 280
  52.  95% 302
  53.  98% 382
  54.  99% 442
  55.  100% 540 (longest request) //最长是540毫秒

把并发数改为50测试一下

ab -c 50 -n 5000 http://192.168.136.135/phpinfo.php
  1.  
    .....
  2.  
    Connection Times (ms)
  3.  
    min mean[+/-sd] median max
  4.  
    Connect: 0 1 1.3 1 18
  5.  
    Processing: 52 104 13.2 104 158
  6.  
    Waiting: 36 79 8.1 79 135
  7.  
    Total: 65 105 13.3 104 170
  8.  
     
  9.  
    Percentage of the requests served within a certain time (ms)
  10.  
    50% 104
  11.  
    66% 108
  12.  
    75% 111
  13.  
    80% 114
  14.  
    90% 126
  15.  
    95% 131
  16.  
    98% 135
  17.  
    99% 139
  18.  
    100% 170 (longest request)
  19.  
    [root@localhost ~]# ab -c 50 -n 5000 http://192.168.136.135/phpinfo.php
  20.  
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
  21.  
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  22.  
    Licensed to The Apache Software Foundation, http://www.apache.org/
  23.  
     
  24.  
    Benchmarking 192.168.136.135 (be patient)
  25.  
    Completed 500 requests
  26.  
    Completed 1000 requests
  27.  
    Completed 1500 requests
  28.  
    Completed 2000 requests
  29.  
    Completed 2500 requests
  30.  
    Completed 3000 requests
  31.  
    Completed 3500 requests
  32.  
    Completed 4000 requests
  33.  
    Completed 4500 requests
  34.  
    Completed 5000 requests
  35.  
    Finished 5000 requests
  36.  
     
  37.  
     
  38.  
    Server Software: nginx
  39.  
    Server Hostname: 192.168.136.135
  40.  
    Server Port: 80
  41.  
     
  42.  
    Document Path: /phpinfo.php
  43.  
    Document Length: 96660 bytes
  44.  
     
  45.  
    Concurrency Level: 50
  46.  
    Time taken for tests: 10.987 seconds
  47.  
    Complete requests: 5000
  48.  
    Failed requests: 478
  49.  
    (Connect: 0, Receive: 0, Length: 478, Exceptions: 0)
  50.  
    Write errors: 0
  51.  
    Total transferred: 484064467 bytes
  52.  
    HTML transferred: 483299467 bytes
  53.  
    Requests per second: 455.07 [#/sec] (mean) //QPS
  54.  
    Time per request: 109.874 [ms] (mean)
  55.  
    Time per request: 2.197 [ms] (mean, across all concurrent requests)
  56.  
    Transfer rate: 43023.80 [Kbytes/sec] received
  57.  
     
  58.  
    Connection Times (ms)
  59.  
    min mean[+/-sd] median max
  60.  
    Connect: 0 1 0.9 1 14
  61.  
    Processing: 32 109 14.4 108 192
  62.  
    Waiting: 9 82 10.1 83 158
  63.  
    Total: 32 109 14.3 109 193
  64.  
     
  65.  
    Percentage of the requests served within a certain time (ms)
  66.  
    50% 109
  67.  
    66% 112
  68.  
    75% 115
  69.  
    80% 118
  70.  
    90% 129
  71.  
    95% 136
  72.  
    98% 144
  73.  
    99% 152
  74.  
    100% 193 (longest request) //最长193

测试结果其实并不实际很准确,因为测试机和被测试机都在一台机器上。这里值是了解。

然后再来一个静态的html测试下

 

转载:https://blog.csdn.net/weixin_41981080/article/details/86742830

以上是关于简单模拟一下ab压力测试的主要内容,如果未能解决你的问题,请参考以下文章

模拟ab压力测试

利用Apach ab对nodejs进行并发负载的压力测试

利用Apach ab对nodejs进行并发负载的压力测试

Apache网页深入优化——ab压力测试,工作模式

Apache网页深入优化之ab压力测试工作模式与目录属性优化

apache bench(ab)压力测试模拟POSt请求