首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有人能解释一下这些ApacheBench结果是什么意思吗?

有人能解释一下这些ApacheBench结果是什么意思吗?
EN

Stack Overflow用户
提问于 2009-09-13 13:19:27
回答 1查看 13.5K关注 0票数 16

我正在尝试弄清楚如何使用ApacheBench并对我的网站进行基准测试。我安装了默认的站点项目(它是ASP.NET MVC,但如果你不是.NET用户,请不要停止阅读)。

我什么都没改变。添加新项目。将confuration设置为RELEASE。运行时不使用Debug。(所以它处于实时模式)。是的,这是内置的Yes服务器,而不是生产级的IIS或Apache或其他什么。

因此,结果如下:

代码语言:javascript
复制
C:\Temp>ab -n 1000 -c 1 http://localhost:50035/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
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 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        ASP.NET
Server Hostname:        localhost
Server Port:            50035

Document Path:          /
Document Length:        1204 bytes

Concurrency Level:      1
Time taken for tests:   2.371 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1504000 bytes
HTML transferred:       1204000 bytes
Requests per second:    421.73 [#/sec] (mean)
Time per request:       2.371 [ms] (mean)
Time per request:       2.371 [ms] (mean, across all concurrent requests)
Transfer rate:          619.41 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.1      0      16
Processing:     0    2   5.5      0      16
Waiting:        0    2   5.1      0      16
Total:          0    2   5.6      0      16

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

C:\Temp>

现在,我不确定我应该看什么。

首先,我后一秒的请求数。因此,如果我们要求每秒处理300个请求,那么这是不是说它平均每秒处理421个请求?

其次,添加更多并发的原因是什么?例如,如果我在1个并发上有1000个命中,那么在2个并发上有500个有什么不同?它是为了测试是否有阻止其他请求的代码?

最后,从结果中我遗漏了什么重要的东西,我应该注意的?

谢谢:)

EN

回答 1

Stack Overflow用户

发布于 2009-09-13 23:04:59

是的,如果你想知道你的站点每秒能处理多少请求,看看“每秒请求数”行。在你的例子中,这真的很简单,因为你运行ab的并发为1,每个请求平均只需要2.371毫秒。其中421个,一个接一个,花了1秒。

你真的应该尝试一下并发性,以准确地衡量你的站点的容量。当IIS并行处理多个请求时,当达到一定程度的并发时,您可以预期吞吐量会增加。例如,如果您的服务器有多个CPU/核心。此外,如果页面依赖于外部IO (中间层服务或DB调用),则cpu可以处理一个请求,而另一个请求则在等待IO完成。在某一时刻,请求/秒将随着并发性的增加而趋于平稳,并且您将看到延迟的增加。进一步增加并发性,您将看到吞吐量(req/sec)下降,因为服务器必须投入更多的资源来处理所有这些并发请求。

总而言之,你的大多数请求都会在大约2毫秒内返回。这是相当快的,所以我猜在数据库或中间层调用方面没有发生太多事情,当测试运行时,您的系统可能在cpu上耗尽了(或者有什么问题,并且失败得非常快。你确定ab会得到你想要的响应页面吗?例如,你认为你正在测试的页面有1204个字节大吗?)这就引出了另一点: ab本身也会消耗cpu,特别是当你增加并发的时候。所以你想在另一台机器上运行ab。

此外,如果您的站点向中间层服务或DB发出外部调用,则需要调整machine.config以优化IIS分配的线程数:http://support.microsoft.com/default.aspx?scid=kb;en-us;821268

还有一点小问题:所用时间的统计是以大约16ms为增量的,因为这似乎是所使用的计时器的粒度。也就是说,80%的回复没有花费0ms,他们花费了一些时间<16ms。

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

https://stackoverflow.com/questions/1417727

复制
相关文章

相似问题

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