Производительность 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