ab基准中最长的请求

时间:2013-10-07 20:38:47

标签: python cherrypy apachebench

来自CherryPy邮件列表的交叉发布。

大家好,

我是新手,我正在努力了解以下琐碎基准的结果。 鉴于这个“你好世界”应用程序:

import cherrypy

class Hello:
    @cherrypy.expose
    def index(self):
        return 'hello'

cherrypy.server.thread_pool = 50
cherrypy.quickstart(Hello())

我运行ab -c 10 -n 1000并获得以下结果:

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:        CherryPy/3.2.4
Server Hostname:        localhost
Server Port:            8080

Document Path:          /
Document Length:        5 bytes

Concurrency Level:      10
Time taken for tests:   4.494 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      143000 bytes
HTML transferred:       5000 bytes
Requests per second:    222.53 [#/sec] (mean)
Time per request:       44.938 [ms] (mean)
Time per request:       4.494 [ms] (mean, across all concurrent requests)
Transfer rate:          31.08 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1  31.6      0     998
Processing:     2   16 183.1      5    4493
Waiting:        1   15 183.1      5    4492
Total:          2   17 185.7      5    4493

Percentage of the requests served within a certain time (ms)
  50%      5
  66%      7
  75%     11
  80%     13
  90%     18
  95%     21
  98%     24
  99%     25
 100%   4493 (longest request)

请注意,最长的请求需要4秒以上才能完成。鉴于我在应用程序中将线程数设置为50,并且该ab使用10个并发请求,我希望cherrypy能够轻松处理它。我错过了什么? 我尝试了不同的#threads和并发请求,结果相似。 我正在使用CherryPy v.3.2.4

感谢您的帮助, 升。

1 个答案:

答案 0 :(得分:0)

首先,您在与服务器(localhost)相同的计算机上运行ApacheBench。因此,它不是一个准确的基准测试,因为ApacheBench正在测试它正在测试的同一台机器上的资源。

您的服务器是否受CPU限制?如果你受CPU限制,GIL(全局解释器锁)可能会咬你(CherrPy正在使用多线程,而不是多处理)。这将导致您一次只能使用一个CPU核心,并可能导致您看到的异常值。

运行基准测试时,请始终检查被测服务器和负载生成机器上的资源(cpu,网络,磁盘等)。

更好的基准测试是:从与您的服务器快速网络连接的远程计算机运行ab(确保计算机位于同一LAN上,因此网络I / O不会影响很多,并运行对于&gt; 1000个请求,因此您获得的测试时间超过5秒,并为您提供监控时间。

相关问题