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

我想了解以下几点:

网站每分钟能处理多少人?

请引导我通过我应该运行的命令来解决这个问题。

我尝试了每一个教程,它们都令人困惑。


当前回答

请引导我通过我应该运行的命令来解决这个问题。

您可以执行的最简单的测试是执行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环境下测试新安装的Wordpress的结果(我使用的是WampDeveloper,但也有Xampp, WampServer和其他)…

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

现在已经慢了37倍!

在负载测试之后,你可以做一些事情来提高整体性能(每秒请求数),也可以让web服务器在更大的负载下更稳定(例如,增加-n和-c会导致Apache崩溃),你可以在这里读到:

负载测试Apache与AB (Apache Bench)

其他回答

在windows上设置Apache Bench(AB)的步骤(IMO -推荐)。 步骤1 -安装Xampp。 步骤2 -打开CMD。 步骤3 -从CMD进入apache bench目的地(cd C:\xampp\apache\bin) 步骤4 -粘贴命令(ab -n 100 -c 10 -k - h "Accept-Encoding: gzip, deflate" http://localhost:yourport/) 第五步——等待时机。你做的

请求后负载测试的最佳解决方案之一。点击这里

仅使用ab对API进行负载测试是不够的。然而,我认为它是一个很好的工具,可以让你对网站的性能有一个基本的了解。

如果你想使用ab命令在后台同时测试多个API端点,使用不同的数据,你需要使用“nohup”命令。即使关闭终端,它也会运行任何命令。

我写了一个简单的脚本,自动化整个过程,请随意使用:http://blog.ikvasnica.com/entry/load-test-multiple-api-endpoints-concurrently-use-this-simple-shell-script

执行步骤: 负载测试命令

步骤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/ 第五步——等待时机。你完成


只有主命令“Get”

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

请引导我通过我应该运行的命令来解决这个问题。

您可以执行的最简单的测试是执行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环境下测试新安装的Wordpress的结果(我使用的是WampDeveloper,但也有Xampp, WampServer和其他)…

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

现在已经慢了37倍!

在负载测试之后,你可以做一些事情来提高整体性能(每秒请求数),也可以让web服务器在更大的负载下更稳定(例如,增加-n和-c会导致Apache崩溃),你可以在这里读到:

负载测试Apache与AB (Apache Bench)