Производительность nginx 1.0.4 + ngx_ctpp
Влад Максимов
vladsm на mail.ru
Вс Июн 19 20:24:12 MSD 2011
Маленько тут поэкспериментировал...
Имеем машинку под CentOS 5.6 x64 2.6.18 (на 2хE5620 с 16G памяти)
На ней имеем:
ctpp2 2.7.0
бэкенд из php 5.3.6, собранный с php_ctpp2 2.6.0 и крутящийся как php-fpm (15 серверов на старте)
фронтенд из nginx 1.0.4, собранный с ngx_ctpp 0.5 (конфиг ngx_ctpp по умолчанию)
Есть некоторый простой шаблон (пара мелких циклов + инклюд куска шаблона в рамках одного из циклов) как в простом виде, так и в виде скомпиленного байткода.
В случае работы через php_ctpp, nginx проксирует запрос на бэкенд, там срабатывает php-скрипт, который загружает скомпиленный байткод шаблона, эмитит в него данные и выплёвывает результат клиенту.
В случае работы через ngx_ctpp, nginx для заданного location берёт тот же самый скомпиленный байткод шаблона, загружает из статического html-файла json с теми же данными, что фигурируют в php, эмитит в шаблон и выплёвывает результат клиенту.
Т.е. содержимое ответа в обоих случая одинаковое совершенно.
Запускаем на той же машине ab и на 20000 запросах получаем следующие цифры:
При -c 1:
в случае работы через ngx_ctpp получаем порядка 3.8-3.9K r/s
в случае работы через php_ctpp получаем порядка 1-1.1К r/s
При -с 5:
в случае работы через ngx_ctpp получаем порядка 5.2K r/s
в случае работы через php_ctpp получаем порядка 5.1К r/s
А вот при -с , скажем, 15
в случае работы через ngx_ctpp получаем порядка всё тех же 5.2K r/s (причём эта цифра не меняется с ростом -c начиная с c>=2 )
в случае работы через php_ctpp получаем уже порядка 10-11К r/s (т.е. с увеличением -c подрастает)
Как бы эти результаты теперь правильно интерпретировать?
Во что упирается ngx_ctpp и как это отследить?
Почему связка из nginx+php-fpm на одной машине оказалась быстрее?
Так задумано, или я чего не учитываю и/или могу подкрутить/донастроить?
Подробная информация о списке рассылки nginx-ru