OS: centos-6
cpu: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
RAM: 1Gb
Методика тестирования:
siege -b -c 50 -r 10000 http://10.10.10.10/phpinfo.php
Результаты тестирования представлены в таблице:
Конфигурация | Elapsed time secs | Response time secs | Transaction rate trans/sec | Throughput MB/sec | Concurrency |
---|---|---|---|---|---|
httpd.worker | 294.44 | 0.03 | 1698.14 | 88.86 | 49.53 |
httpd.prefork | 301.10 | 0.03 | 1660.58 | 91.75 | 49.93 |
httpd.event | 294.13 | 0.03 | 1699.93 | 88.96 | 47.81 |
httpd.ITK | 10589.40 | 1.06 | 47.22 | 49.96 | 49.96 |
httpd prefork (mod_fastcgi+php-fpm) | 1927.11 | 0.19 | 259.46 | 12.95 | 49.89 |
httpd prefork (mod_fcgid) | 1910.62 | 0.19 | 261.70 | 13.29 | 49.91 |
nginx+php_fpm (127.0.0.1:9000) | 319.53 | 0.03 | 1564.80 | 14.89 | 49.83 |
nginx+php-fpm (via local socket) | 317.15 | 0.03 | 1576.54 | 15.00 | 49.81 |
Transactions – количество обращений к серверу.
Elapsed time – общая продолжительность тестирования. Она высчитывается начиная с первого обращения к серверу и кончая получением ответа на последний запрос.
Response time – среднее время за которое сервер успел ответить клиенту.
Transaction rate – среднее число обращений которые сервер успел обработать за секунду. Оно получается путём деления общего числа запросов на затраченное время.
Throughput – среднее число данных передаваемых ежесекундно от сервера к пользователям.
Concurrency – количество одновременных подключений при которых сервер отвечает без задержек.
Из это таблицы видно, что apache ITK в 33 раза медленней по сравнению с httpd [prefork, event, worker], и в 5 раз по сравнению с mod_fcgi/mod_fastcgi.
Заметки о MPM
Apache (worker MPM) + mod_php
Для обработки динамических запросов используется модуль php, работающий в контексте сервера.
При этом, так как php работает в адресном пространстве сервера, разделяемые потоками данные периодически портятся, поэтому связка нестабильна и не рекомендована. Это происходит из-за ошибок в mod_php, который включает в себя ядро PHP и различные php-модули.
Ошибка в модуле, благодаря одному адресному пространству, может повалить весь сервер.
Apache (event mpm) + mod_php
Event MPM — это стратегия работы с worker’ами, которую использует только Apache. Все — точно так же, как с обычными потоками, но с небольшим дополнением для обработки Keep-Alive. Установка Keep-Alive служит для того, чтобы клиент мог прислать много запросов в одном соединении. Например, получить веб-страницу и 20 картинок. Обычно, worker заканчивает обработку запроса — и ждет какое-то время (keep-alive time), не последуют ли в этом соединении дополнительные запросы. То есть, просто висит в памяти.
Event MPM создает дополнительный поток, который берет на себя ожидание всех Keep-Alive запросов, освобождая рабочего для других полезных дел. В результате, общее количество worker’ов значительно сокращается, т.к никто теперь не ждет клиентов, а все работают.
Comments are closed.