apache ab载荷试验

lztngnrs  于 2022-12-30  发布在  Apache
关注(0)|答案(7)|浏览(109)

有人能告诉我如何使用apache bench toolab)对我的网站进行负载测试吗?
我想知道以下几点:

站点每分钟可处理多少人?

请向我介绍为解决此问题而应运行的命令。
我尝试了每一个教程,他们是混乱的。

r1zk6ea1

r1zk6ea11#

Apache基准测试工具是非常基本的,虽然它可以给予您对性能有一个可靠的了解,但如果您打算让站点在生产中承受严重的压力,那么只依赖它是一个坏主意。
话虽如此,这里是最常见和最简单的参数:
-c:(“Concurrency”)。表示有多少客户端(人/用户)将同时访问站点。当ab运行时,将有-c客户端访问站点。这实际上决定了您的站点在基准测试期间承受的压力大小。
-n:表示将要发出多少请求。这只是决定基准测试的长度。一个高-n值和一个服务器可以支持的-c值是一个好主意,可以确保在持续的压力下不会崩溃:承受5秒钟的压力和承受5小时的压力是不一样的。
-k:这是“KeepAlive”功能浏览器的自然功能。您不需要为-k传递一个值,因为它是“布尔值”(意思是:这表明您希望您的测试使用HTTP的KeepAlive报头并保持连接).由于浏览器会这样做,并且您可能希望模拟您的站点将从浏览器获得的压力和流量,因此建议您使用此进行基准测试.
最后一个参数是主机,默认情况下,如果不指定它,它将访问http://protocol。

ab -k -c 350 -n 20000 example.com/

通过发出上面的命令,您将使用350个同时连接访问http://example.com/,直到满足2万个请求为止,这将使用keepalive报头来完成。
当这个过程完成了2万个请求后,你会收到统计数据的反馈,这会告诉你当你使用上面的参数时,网站在你施加的压力下表现得有多好。
要了解站点可以同时处理多少人,只需查看响应时间(平均值、最小和最大响应时间、失败请求等)是否是站点可以接受的数字(不同的站点可能需要不同的速度)。您可以使用不同的-c值运行该工具,直到您遇到“如果我增加它,它将开始接收失败请求,然后它会崩溃”的情况。
根据您的网站,您可能会期望每分钟的平均请求数。这变化太大,您无法用ab模拟。但是,请这样考虑:如果你的用户平均每分钟访问5个请求,而你认为有效的平均响应时间是2秒,这意味着每分钟有10秒会有1个用户访问请求,这意味着只有1/6的时间会访问网站。这也意味着如果你有6个用户同时使用ab访问网站,你可能有36个用户在模拟中。即使并发级别(-c)只有6。
这取决于你期望用户使用网站的行为,但是你可以从“我期望我的用户每分钟点击X个请求,我认为平均响应时间是2秒是有效的”中得到它。然后修改你的-c级别,直到你达到2秒的平均响应时间(但是要确保最大响应时间和stddev仍然有效),看看你可以把-c设置得多大。

dvtswwa3

dvtswwa32#

请向我介绍为解决此问题而应运行的命令。
您可以做的最简单的测试是执行1000个请求,一次10个(这大约模拟了10个并发用户,每个用户获得100个页面--在整个测试期间)。

ab -n 1000 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://www.example.com/

-n 1000是要发出的请求数。
-c 10告诉AB一次处理10个请求,而不是一次处理1个请求,以更好地模拟并发访问者(与顺序访问者相比)。
-k发送KeepAlive报头,该报头要求Web服务器在每个请求完成后不要关闭连接,而是继续重用连接。
我还发送了额外的头文件Accept-Encoding: gzip, deflate,因为mod_deflate几乎总是用于将文本/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)

对于最简单的解释,忽略除此行之外的所有内容:

Requests per second:    704.23 [#/sec] (mean)

乘以60,你每分钟就有你的请求。
为了得到真实的结果,你需要测试WordPress而不是静态的HTML或index.php文件,因为你需要知道所有东西是如何一起执行的:包括复杂的PHP代码和多个MySQL查询...
例如,下面是在相同的系统和WAMP环境(我使用的是WampDeveloper,但也有Xampp、WampServer和其他)上测试新安装的WordPress的结果...

Requests per second:    18.68 [#/sec] (mean)
    • 现在慢了37倍**

在负载测试之后,您可以做一些事情来提高整体性能(每秒请求数),并使Web服务器在更大负载下更稳定(例如,增加-n-c往往会使Apache崩溃),您可以在这里阅读:
Load Testing Apache with AB (Apache Bench)

ldfqzlk8

ldfqzlk83#

在Windows上设置Apache Bench(AB)的步骤(IMO -推荐)。
步骤1 -安装Xampp。
步骤2 -打开CMD。
步骤3 -从CMD转到apache工作台目标(cd C:\xampp\apache\bin
步骤4 -粘贴命令(ab -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://localhost:yourport/
第5步-等待它。你完成了

qc6wkl3g

qc6wkl3g4#

仅仅使用ab对API进行负载测试是不够的,但是,我认为这是一个很好的工具,可以给予你对你的站点的性能有一个基本的了解。
如果您想使用中的ab命令在后台同时测试多个API端点,使用不同的数据,则需要使用“nohup”命令,即使您关闭终端,它也会运行任何命令。
我写了一个简单的脚本,自动化的整个过程,随时使用它:http://blog.ikvasnica.com/entry/load-test-multiple-api-endpoints-concurrently-use-this-simple-shell-script

pprl5pva

pprl5pva5#

我也很好奇我是否可以用apache abs或者construct / destruct php measure脚本或者php扩展来测量我的脚本的速度。
最后两个对我来说是失败的:他们是近似的。之后我想试试“ab”和“abs”。
命令“ab-k-c350-example.com/“很漂亮,因为它非常简单!
但是有没有人想过在任何Apache服务器上使用“localhost”,例如www.apachefriends.org?
你应该在根目录下创建一个文件夹,如“bench”,其中有2个文件:测试“bench.php”并引用“void.php”。

然后:基准测试!

工作台. php

<?php

for($i=1;$i<50000;$i++){
    print ('qwertyuiopasdfghjklzxcvbnm1234567890');
}
?>

无效. php

<?php
?>

在您的桌面上,您应使用.bat文件(在Windows中),如下所示:

工作台球棒

"c:\xampp\apache\bin\abs.exe" -n 10000 http://localhost/bench/void.php
"c:\xampp\apache\bin\abs.exe" -n 10000 http://localhost/bench/bench.php
pause

如果你仔细听...
void脚本没有产生零结果!!!因此结论是:从第二个结果开始,第一个结果应该减少!!!
我找到了:

c:\xampp\htdocs\bench>"c:\xampp\apache\bin\abs.exe" -n 10000 http://localhost/bench/void.php
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

Server Software:        Apache/2.4.33
Server Hostname:        localhost
Server Port:            80

Document Path:          /bench/void.php
Document Length:        0 bytes

Concurrency Level:      1
Time taken for tests:   11.219 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      2150000 bytes
HTML transferred:       0 bytes
Requests per second:    891.34 [#/sec] (mean)
Time per request:       1.122 [ms] (mean)
Time per request:       1.122 [ms] (mean, across all concurrent requests)
Transfer rate:          187.15 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       1
Processing:     0    1   0.9      1      17
Waiting:        0    1   0.9      1      17
Total:          0    1   0.9      1      17

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      1
  80%      1
  90%      1
  95%      2
  98%      2
  99%      3
 100%     17 (longest request)

c:\xampp\htdocs\bench>"c:\xampp\apache\bin\abs.exe" -n 10000 http://localhost/bench/bench.php
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

Server Software:        Apache/2.4.33
Server Hostname:        localhost
Server Port:            80

Document Path:          /bench/bench.php
Document Length:        1799964 bytes

Concurrency Level:      1
Time taken for tests:   177.006 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      18001600000 bytes
HTML transferred:       17999640000 bytes
Requests per second:    56.50 [#/sec] (mean)
Time per request:       17.701 [ms] (mean)
Time per request:       17.701 [ms] (mean, across all concurrent requests)
Transfer rate:          99317.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       1
Processing:    12   17   3.2     17      90
Waiting:        0    1   1.1      1      26
Total:         13   18   3.2     18      90

Percentage of the requests served within a certain time (ms)
  50%     18
  66%     19
  75%     19
  80%     20
  90%     21
  95%     22
  98%     23
  99%     26
 100%     90 (longest request)

c:\xampp\htdocs\bench>pause
Press any key to continue . . .

90-17= 73我期待的结果!

vhipe2zx

vhipe2zx6#

执行步骤:用于负载测试的命令

  • 步骤1-安装Xampp。
  • 步骤2-打开CMD。
  • 步骤3-从CMD转到Apache工作台目标(cd C:\xampp\apache\bin)。
  • 步骤4-粘贴命令
ab -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://localhost:port/
  • 第5步-等待它。你已经完成了

1.仅主命令"获取"

ab -k -c 25 -n 2000 http://192.168.1.113:3001/api/v1/filters/3
wlp8pajw

wlp8pajw7#

请求后负载测试的最佳解决方案之一。Click here

相关问题