ab负载测试

jew*_*ast 184 apache benchmarking

有人可以告诉我如何使用apache bench工具(ab)加载测试我的网站的过程吗?

我想知道以下内容:

该网站每分钟可处理多少人?

请引导我完成我应该运行的命令来解决这个问题.

我尝试了每个教程,他们很困惑.

Mam*_*aac 299

apache基准测试工具非常基础,虽然它可以让你对某些性能有一个坚实的认识,但如果你计划让你的网站在生产中面临严重的压力,那么仅仅依赖它是一个坏主意.

话虽如此,这是最常见和最简单的参数:

-c:("并发").指示同时有多少客户端(人/用户)访问该站点.在ab运行时,会有-c客户点击该网站.这实际上决定了您的网站在基准测试期间所承受的压力.

-n:表示要进行的请求数.这只是决定了基准的长度.-n具有-c服务器可以支持的值的高值是确保事物不会在持续压力下破坏的好主意:支持5秒钟的压力与5小时的压力不同.

-k:这就是"KeepAlive"功能性浏览器的本质.您不需要为-k"boolean" 传递值(意思是:它表示您希望测试使用来自HTTP的Keep Alive标头并维持连接).由于浏览器会执行此操作并且您可能希望模拟网站从浏览器中获得的压力和流量,因此建议您使用此方法进行基准测试.

最后一个论点就是主持人.默认情况下,如果您不指定它,它将命中http://协议.

ab -k -c 350 -n 20000 example.com/
Run Code Online (Sandbox Code Playgroud)

通过发出上述命令,您将使用350个同时连接点击http://example.com/,直到满足2万个请求.它将使用keep alive标头完成.

在该过程完成2万个请求后,您将收到有关统计数据的反馈.这将告诉您在使用上述参数时,在您施加的压力下网站的执行情况.

要了解网站可以同时处理多少人,只需查看响应时间(平均值,最小和最大响应时间,请求失败等)是否是您的站点可以接受的数字(不同站点可能需要不同的速度).您可以使用不同的-c值运行该工具,直到您遇到"如果我增加它,它开始获得失败的请求并且它中断"的位置.

根据您的网站,您将获得每分钟平均请求数.这变化很大,你将无法用ab来模拟这个.但是,请考虑这种方式:如果您的普通用户每分钟会发出5个请求,并且您发现有效的平均响应时间为2秒,这意味着10分钟内的1个用户将处于请求状态,这仅表示1/6的时间它将击中该网站.这也意味着,如果您有6个用户同时使用ab访问该站点,即使您的并发级别(-c)仅为6,您在模拟中也可能有36个用户.

这取决于您对使用该站点的用户的期望行为,但您可以从"我希望我的用户每分钟达到X个请求,并且我认为平均响应时间有效,如果它是2秒"得到它.然后只需修改你的-c级别,直到你达到2秒的平均响应时间(但确保最大响应时间和stddev仍然有效),看看你能做多大的-c.

我希望我解释清楚:)祝你好运

  • 直截了当的回答!你能不能再详细解释为什么你会这样做"这也意味着如果你有6个用户同时使用ab访问网站,你可能有36个用户进行模拟,即使你的并发级别(-c)只是6." (5认同)
  • 提醒一下,如果页面具有动态内容,您可能希望添加``-l``选项,这样您就不会因为请求之间的内容长度不同而得到一堆失败的请求. (3认同)

rig*_*uff 70

请引导我完成我应该运行的命令来解决这个问题.

您可以做的最简单的测试是执行1000个请求,一次10个(大约模拟10个并发用户,每次获得100个页面 - 在整个测试期间).

ab -n 1000 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://www.example.com/
Run Code Online (Sandbox Code Playgroud)

-n 1000 是要求的数量.

-c 10 告诉AB一次执行10个请求,而不是一次执行1个请求,以更好地模拟并发访问者(与顺序访问者相比).

-k发送KeepAlive标头,要求Web服务器在每个请求完成后不关闭连接,而是继续重用它.

我也发送了额外的头文件,Accept-Encoding: gzip, deflate因为mod_deflate几乎总是用于压缩text/html输出25%-75% - 由于它对Web服务器整体性能的影响,因此不应该忽略其影响(即,可以在相同的时间内传输2倍的数据,等等.

结果:

Benchmarking www.example.com (be patient)
Completed 100 requests
...
Finished 1000 requests


Server Software:        Apache/2.4.10
Server Hostname:        www.example.com
Server Port:            80

Document Path:          /
Document Length:        428 bytes

Concurrency Level:      10
Time taken for tests:   1.420 seconds
Complete requests:      1000
Failed requests:        0
Keep-Alive requests:    995
Total transferred:      723778 bytes
HTML transferred:       428000 bytes
Requests per second:    704.23 [#/sec] (mean)
Time per request:       14.200 [ms] (mean)
Time per request:       1.420 [ms] (mean, across all concurrent requests)
Transfer rate:          497.76 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:     5   14   7.5     12      77
Waiting:        5   14   7.5     12      77
Total:          5   14   7.5     12      77

Percentage of the requests served within a certain time (ms)
  50%     12
  66%     14
  75%     15
  80%     16
  90%     24
  95%     29
  98%     36
  99%     41
 100%     77 (longest request)
Run Code Online (Sandbox Code Playgroud)

对于最简单的解释,忽略一切但是这一行:

Requests per second:    704.23 [#/sec] (mean)
Run Code Online (Sandbox Code Playgroud)

乘以60,你每分钟都有你的要求.

要获得真实世界的结果,您需要测试Wordpress而不是一些静态HTML或index.php文件,因为您需要知道所有内容如何一起执行:包括复杂的PHP代码和多个MySQL查询......

例如,以下是在同一系统和WAMP环境中测试全新安装的Wordpress的结果(我使用的是WampDeveloper,但也有Xampp,WampServer等)...

Requests per second:    18.68 [#/sec] (mean)
Run Code Online (Sandbox Code Playgroud)

现在慢了37倍!

在负载测试之后,您可以做很多事情来提高整体性能(每秒请求数),并且还可以在更大负载下使Web服务器更稳定(例如,增加-n并且-c趋向于崩溃Apache),你可以在这里阅读:

用AB负载测试Apache(Apache Bench)


Cha*_*ena 8

在Windows上设置Apache Bench(AB)的步骤(IMO - 推荐).

第1步 - 安装Xampp.
第2步 - 打开CMD.
步骤3 - cd C:\xampp\apache\bin从CMD 转到apache bench destination()
步骤4 - 粘贴命令(ab -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://localhost:yourport/)
步骤5 - 等待它.你做完了