На главную -> Жизнь -> Daily -> OS -> FreeBSD -> Жизнь -> Home -> Software -> Programming -> Домашнее тестирование производительности. Часть первая.

Домашнее тестирование производительности. Часть первая.

Вчера решил заняться тестированием производительноси домашнего сайта на моей новой машинке.

Сайт из себя представляет набор скриптов на PERL, данные хранятся в MySQL, крутится все по управлением Apache 2.2, на FreeBSD 7.0-STABLE-amd64. Тестирование производил по методике. описанной тут.

Первая страница, с десятью запросами в секунду, результаты:

218 fetches, 373 max parallel, 578562 bytes, in 60.1658 seconds
2653.95 mean bytes/connection
3.62332 fetches/sec, 9616.13 bytes/sec
msecs/connect: 0.240661 mean, 0.556 max, 0.064 min
msecs/first-response: 9699.27 mean, 34719.9 max, 207.924 min
210 bad byte counts
HTTP response codes:
code 200 — 109

Небыстро, подумал я. Неужно, PERL такой медленный получается? Или просто код неоптимизированый? Написал на Коленке быстренько скрипт на php, выбирающий все записи из таблицы (более тысячи записей, размер табицы 1.8 Мегабайт). Результаты:

598 fetches, 11 max parallel, 1.06257e+09 bytes, in 60 seconds
1.77688e+06 mean bytes/connection
9.96666 fetches/sec, 1.77096e+07 bytes/sec
msecs/connect: 0.0724348 mean, 0.295 max, 0.048 min
msecs/first-response: 174.208 mean, 999.469 max, 138.848 min
HTTP response codes:
code 200 — 598

Молодец, PHP, все отдал. все быстренько. Своял такой же (тот же запрос, та же отдача) скрипт на PERL. Удивился:

599 fetches, 1 max parallel, 1.06428e+09 bytes, in 60 seconds
1.77676e+06 mean bytes/connection
9.98333 fetches/sec, 1.7738e+07 bytes/sec
msecs/connect: 0.0690417 mean, 0.217 max, 0.054 min
msecs/first-response: 47.338 mean, 53.21 max, 47.066 min
HTTP response codes:
code 200 — 599

При том, что время отдачи минимальное чуть больше, чем у php, perl более стабилен в хороших результатах. Продолжив эксперименты дальше – увеличил количество запросов до 50 в секунду, perl сдался:

1780 fetches, 464 max parallel, 2.80196e+09 bytes, in 60.0368 seconds
1.57413e+06 mean bytes/connection
29.6485 fetches/sec, 4.66707e+07 bytes/sec
msecs/connect: 106.043 mean, 3271.55 max, 0.052 min
msecs/first-response: 3265.43 mean, 8278.56 max, 0.206 min
203 bad byte counts
HTTP response codes:
code 200 — 1577

У PHP:

2992 fetches, 24 max parallel, 5.31642e+09 bytes, in 60.0002 seconds
1.77688e+06 mean bytes/connection
49.8665 fetches/sec, 8.86068e+07 bytes/sec
msecs/connect: 0.208658 mean, 7.537 max, 0.049 min
msecs/first-response: 156.402 mean, 5042.3 max, 138.581 min
HTTP response codes:
code 200 — 2992

Львиная доля производительности при исполнения скрипта на PERL, тратится на запуск отдельного экземпляра PERL-интерпретатора, в отличие от исполняемого php-скрипта как модуля Apache. 50 запросов в секунду на моем домашнем сайтике – это фантастическая величина. Но, чтобы было все хорошо, надо либо переписывать все на php, либо экспериментировать с mod_perl, ну или заняться аццкой оптимизацией существующего кода. Но это уже совсем другая песня.

Похожие записи

Теги: , , , , , , ,

Запись сделана в категории Daily, FreeBSD, Home, Programming

2 Responses to “Домашнее тестирование производительности. Часть первая.”


Kozer (1 comments) Август 21st, 2008 at 17:21

Бьютифул!

Amir (1 comments) Октябрь 30th, 2008 at 02:29

Зря не используете FeedBurner



Leave a Reply


Get Adobe Flash playerPlugin by wpburn.com wordpress themes