2013-10-07 2 views
1

Перекрестная регистрация от CherryPy список рассылки.Самый длинный запрос в ab benchmark

Привет всем,

Я новичок в 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

Спасибо за вашу помощь, Л.

ответ

0

Во-первых, вы работаете ApacheBench на той же машине, как сервер (локальный). Таким образом, это не точный бенчмарк, так как ApacheBench поедает ресурсы на той же машине, на которой он тестирует.

Ваш сервер связан с процессором? Если вы связаны с процессором, возможно, GIL (Global Interpreter Lock) кусает вас (CherrPy использует многопоточность, а не многопроцессорность). Это приведет к тому, что вы будете использовать только одно ядро ​​процессора за раз, и это может вызвать появление вылета.

При тестировании тестов всегда проверяйте ресурсы (процессор, сеть, диск и т. Д.) Как на тестируемом сервере, так и на машине, генерирующей нагрузку.

Лучшим эталоном было бы: запустить ab с удаленной машины с быстрым сетевым подключением к вашему серверу (убедитесь, что компьютеры находятся в одной и той же локальной сети, поэтому сетевой ввод-вывод не сильно влияет и работает в течение> 1000 так что вы получаете тест, который длится более 5 секунд и дает вам время для мониторинга.

+0

Тест очень светлый в памяти, конечно, и процессоры (4) работают по 50% каждый, поэтому, не особенно интенсивно, , afaict. Меня удивляет также максимальное время соединения, 4493 мс, как если бы один из запросов остался без обработки. Более длинные тесты показывают очень похожие результаты. – lbolla

+0

хм .. вы смотрите на использование отдельного ядра процессора ?, или просто средние из всех ядер. Иногда это может вводить в заблуждение, если машина привязана к компьютеру только с e core pegged, поэтому avg, о котором сообщает инструмент «top», заставит вас думать, что все в порядке. –

+0

На самом деле, я использую монитор sys, который показывает графики для каждого ядра. Если это суперточно, я не знаю. Но если это было причиной, почему было бы очень мало запросов, и подавляющее большинство выполнялось в тысячи раз быстрее? – lbolla