[Moscow.pm] FastCGI

Valery Studennikov despairr на gmail.com
Ср Июн 18 04:45:29 PDT 2008


On Tue, May 27, 2008 at 11:52:29AM +0400, Anatoly Sharifulin wrote:
> Интересное мнение :)
> Давайте устроим онлайн хакатон - сделаем теситрование различных серверных
> решений:
>  - FastCGI
>  - mod_perl2
>  - HTTP::Daemon
>  - Net::Server
>  - Catalyst::Engine
>  - POE
> 
> Я могу написать@POE, вариантов несколько, в т.ч. и pre-fork есть.
> Только нужно опеределиться с прикладной логикой, которую будем тестировать
> (желательно, не Hello World тестировать :).

Тестирую живой сайт с достаточно "тяжёлой" логикой -- www.reg.ru.
Раньше был на apache+mod_perl, сейчас перевёл на Catalyst::Engine::HTTP::Prefork.

Провёл локальные эксперименты, после чего перевёл production сервер.
Т.е сейчас работат связка nginx + Catalyst::Engine::HTTP::Prefork.

> Что важно:
>  - производительность (количество запросов в секунду)

Практически не изменилось.
Среднее время отклика равно в обоих случаях.
Однако, максимальное время отклика меньше у Catalyst::Engine,
т.е. он более "предсказуем".

>  - использование ресурсов (память, CPU, количество процессов)

Памяти жрёт немного меньше, примерно на 10%.
(40Mb Catalyst::Engine vs 40 Mb apache+mod_perl)

>  - отказоустойчивость

Пока какой-либо нестабильности / глюков не замечено.

* * *

Вот грубые результаты тестов (правда, в один поток):

################# APACHE+MOD_PERL
$ ab -n 100 http://www1.reg.ru:80/

Benchmarking www1.reg.ru (be patient).....done

Server Software:        Apache/2.2.8
Server Hostname:        www1.reg.ru
Server Port:            80

Document Path:          /
Document Length:        42268 bytes

Concurrency Level:      1
Time taken for tests:   7.317259 seconds
Complete requests:      100
Failed requests:        11
   (Connect: 0, Length: 11, Exceptions: 0)
Write errors:           0
Total transferred:      4259074 bytes
HTML transferred:       4226774 bytes
Requests per second:    13.67 [#/sec] (mean)
Time per request:       73.173 [ms] (mean)
Time per request:       73.173 [ms] (mean, across all concurrent requests)
Transfer rate:          568.38 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    66   72   8.8     70     127
Waiting:       64   71   8.6     68     125
Total:         66   72   8.8     70     127

Percentage of the requests served within a certain time (ms)
  50%     70
  66%     73
  75%     75
  80%     76
  90%     78
  95%     88
  98%    111
  99%    127
 100%    127 (longest request)

################# Catalyst::Engine::HTTP::Prefork

[walery на despair srs]$ ab -n 100 http://www1.reg.ru:3000/

Benchmarking www1.reg.ru (be patient).....done

Server Software:        
Server Hostname:        www1.reg.ru
Server Port:            3000

Document Path:          /
Document Length:        42264 bytes

Concurrency Level:      1
Time taken for tests:   7.498447 seconds
Complete requests:      100
Failed requests:        11
   (Connect: 0, Length: 11, Exceptions: 0)
Write errors:           0
Total transferred:      4256878 bytes
HTML transferred:       4226378 bytes
Requests per second:    13.34 [#/sec] (mean)
Time per request:       74.984 [ms] (mean)
Time per request:       74.984 [ms] (mean, across all concurrent requests)
Transfer rate:          554.38 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    70   74   4.8     73      96
Waiting:       64   72   4.9     71      95
Total:         70   74   4.8     73      96
Percentage of the requests served within a certain time (ms)
  50%     73
  66%     75
  75%     76
  80%     77
  90%     81
  95%     83
  98%     96
  99%     96
 100%     96 (longest request)

-- 

Regards,
    Walery Studennikov
CTO of Accredited Domain Name Registrar REG.RU
http://www.reg.ru/


Подробная информация о списке рассылки Moscow-pm