请有人帮助我通过Apache Bench 工具 (ab
)来加载测试我的网站,你可以提供以下的信息:
网站每分钟可以处理多少访问量?
请向我展示应该运行的命令以找出答案。
我已经尝试了所有的教程,但它们都很难理解。
请有人帮助我通过Apache Bench 工具 (ab
)来加载测试我的网站,你可以提供以下的信息:
网站每分钟可以处理多少访问量?
请向我展示应该运行的命令以找出答案。
我已经尝试了所有的教程,但它们都很难理解。
-c
:(“并发”)。表示同时有多少个客户端(人/用户)将访问该站点。在运行ab
时,将有-c
个客户端访问该站点。这实际上决定了基准测试期间您的网站所承受的压力量。
-n
:表示将进行多少个请求。这只是决定基准测试的长度。使用服务器支持的-c
值的高-n
值是个好主意,以确保在持续的压力下不会出现问题:支持5秒和5小时的压力是不同的。"
-k
:这个功能是浏览器天然具备的“KeepAlive”。你不需要为-k
传递一个值,因为它是“布尔型”(意味着它表明您希望您的测试使用HTTP中的Keep Alive头并保持连接)。由于浏览器会执行此操作,并且您可能希望模拟您的网站将从浏览器那里获得的压力和流量,因此建议您使用此选项进行基准测试。
最后一个参数就是主机名。如果您没有指定它,默认情况下它会命中http://协议。
ab -k -c 350 -n 20000 example.com/
请带我一步步运行命令以找出问题所在。
最简单的测试方法是执行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 个请求,而不是每次发送一个,以更好地模拟并发访问者(与连续访问者相比)。
-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崩溃),您可以在此处阅读有关这些措施的详细信息:
在Windows上设置Apache Bench(AB)的步骤(我个人认为值得推荐)。
第一步 - 安装Xampp。
第二步 - 打开CMD。
第三步 - 从CMD进入apache bench目的地 (cd C:\xampp\apache\bin
)。
第四步 - 粘贴命令 (ab -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://localhost:yourport/
)。
第五步 - 等待完成。你完成了
我也很好奇是否可以使用Apache ab或构建/销毁PHP测量脚本或PHP扩展来测量我的脚本速度。
对于后两者,它们对我来说失败了:它们是近似值。 之后我想尝试"ab"和"abs"。
命令"ab -k -c 350 -n 20000 example.com/"很棒,因为一切都更容易!
但有人想过在任何Apache服务器上的"localhost",例如www.apachefriends.org吗?
您应该在根目录下创建一个名为"bench"的文件夹,其中有2个文件:测试"bench.php"和参考"void.php"。
<?php
for($i=1;$i<50000;$i++){
print ('qwertyuiopasdfghjklzxcvbnm1234567890');
}
?>
<?php
?>
"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
现在如果你仔细注意的话...
空脚本并不会产生零结果!!! 因此结论是:从第二个结果开始,第一个结果应该减少!!!
我的这里:
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是我期望的结果!
执行步骤: 负载测试命令
cd C:\xampp\apache\bin
) from CMD.ab -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://localhost:port/
ab -k -c 25 -n 2000 http://192.168.1.113:3001/api/v1/filters/3