Домашнее тестирование производительности. Часть первая.
Вчера решил заняться тестированием производительноси домашнего сайта на моей новой машинке.
Сайт из себя представляет набор скриптов на 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
Меня зовут Лисовский Евгений.
Amir (1 comments) Октябрь 30th, 2008 at 02:29
Зря не используете FeedBurner