首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ab负载测试

ab负载测试
EN

Stack Overflow用户
提问于 2012-10-05 01:02:53
回答 5查看 226.4K关注 0票数 221

有没有人可以教我如何使用以下工具对我的网站进行加载测试

apache工作台工具

(

)?

我想知道以下几点:

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

请告诉我我应该运行哪些命令来解决这个问题。

我尝试了所有的教程,但它们都令人困惑。

EN

回答 5

Stack Overflow用户

发布于 2012-10-05 01:19:11

apache benchmark工具非常基础,虽然它可以让您对一些性能有一个坚实的了解,

如果你打算让你的网站在生产过程中暴露在严重的压力之下,那么只依赖它是一个坏主意。

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

:(“并发”)。指示将同时访问该站点的客户端(人员/用户)数量。而

运行,将会有

客户访问网站。这实际上决定了您的站点在基准测试期间将遭受的压力。

:表示要发出多少个请求。这决定了基准的长度。高

值与

您的服务器可以支持的值是一个好主意,以确保在持续的压力下不会崩溃:支持5秒的压力与支持5小时的压力是不同的。

:这就是"KeepAlive“功能浏览器的本质。您不需要将值传递给

因为它是“布尔型”的(意思是:它表明您希望测试使用来自HTTP的Keep Alive报头并保持连接)。由于浏览器可以做到这一点,并且您可能想要模拟来自浏览器的站点的压力和流量,因此建议您对此进行基准测试。

最后一个参数很简单,就是主机。默认情况下,如果您不指定它,它将命中http:// protocol。

代码语言:javascript
复制
ab -k -c 350 -n 20000 example.com/

通过发出上面的命令,您将会遇到

http://example.com/

350个同时连接,直到满足20000个请求。这将使用keep alive标头来完成。

在该过程完成20000个请求后,您将收到统计信息的反馈。这将告诉你在使用上面的参数时,网站在你施加的压力下表现得有多好。

为了找出站点可以同时处理多少人,只需查看响应时间(平均、最小和最大响应时间、失败的请求等)是否是您的站点可以接受的数字(不同的站点可能需要不同的速度)。你可以用不同的-c值运行这个工具,直到你说“如果我增加它,它开始收到失败的请求,它就会崩溃”。

根据您的网站,您预计每分钟的平均请求数。这个变化太大了,你不能用ab来模拟。但是,这样想:如果您的平均用户每分钟将点击5个请求,并且您发现有效的平均响应时间是2秒,这意味着每分钟1个用户中有10秒是在请求上,这意味着它访问站点的时间只有1/6。这也意味着,如果有6个用户同时使用ab访问站点,那么很可能有36个用户在模拟中,即使你的并发级别(-c)只有6。

这取决于您对使用站点的用户的预期行为,但您可以从“我期望我的用户每分钟达到X个请求,如果是2秒,我认为平均响应时间是有效的”中获得它。然后,只需修改您的-c级别,直到达到2秒的平均响应时间(但确保最大响应时间和stddev仍然有效),并查看您可以将-c设置为多大。

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

票数 353
EN

Stack Overflow用户

发布于 2014-08-23 02:59:21

请告诉我我应该运行哪些命令来解决这个问题。

您能做的最简单的测试是执行1000个请求,每次10个(在整个测试过程中,这大约模拟了10个并发用户,每个用户获得100个页面)。

代码语言:javascript
复制
ab -n 1000 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://www.example.com/

要发出的请求数。

告诉AB一次做10个请求,而不是一次做一个请求,以更好地模拟并发访问者(而不是顺序访问者)。

发送

标头,它要求web服务器在每个请求完成后不要关闭连接,而是继续重用它。

我还发送了额外的报头

因为模式

_

deflate几乎总是被用来压缩文本/html输出的25%-75% -它的影响不应该因为它对web服务器的整体性能的影响而被忽视(例如,可以在相同的时间内传输2倍的数据,等等)。

结果:

代码语言:javascript
复制
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)

要获得最简单的解释,请忽略除下面这一行之外的所有内容:

代码语言:javascript
复制
Requests per second:    704.23 [#/sec] (mean)

再乘以60,你就得到了每分钟的请求数。

为了得到真实的结果,你需要测试Wordpress,而不是一些静态的超文本标记语言或者index.php文件,因为你需要知道所有东西是如何协同工作的:包括复杂的MySQL代码和多个PHP查询……

例如,下面是在相同的系统和WAMP环境(我使用的是WampDeveloper,但也有Xampp、WampServer等)上测试新安装的Wordpress的结果……

代码语言:javascript
复制
Requests per second:    18.68 [#/sec] (mean)

现在慢了37倍!

在负载测试之后,您可以做许多事情来提高整体性能(每秒的请求数),还可以使web服务器在更大的负载下更稳定(例如,增加

倾向于使Apache崩溃),你可以在这里读到:

使用AB对Apache进行负载测试(Apache Bench)

票数 80
EN

Stack Overflow用户

发布于 2017-03-23 18:33:10

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

步骤1-安装Xampp。

第2步-打开CMD。

第3步-转到apache bench目的地(

)来自CMD

步骤4-粘贴命令(

)

步骤5-等待它。你的任务完成了

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12732182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档