Re: Производительность nginx 1.0.4 + ngx_ctpp

Sergey Shepelev temotor на gmail.com
Вс Июн 19 21:13:01 MSD 2011


2011/6/19 Влад Максимов <vladsm at mail.ru>:
>  Маленько тут поэкспериментировал...
>
> Имеем машинку под 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 и как это отследить?

http://sysoev.ru/nginx/docs/ngx_core_module.html#worker_processes
= кол-во ядер * K, где K настраивается от 1.0 до 2.0 под конкретную
машину, нагрузку и пр.

Отследить при помощи [h]top. Он покажет, что часть ядер простаивают.

> Почему связка из nginx+php-fpm на одной машине оказалась быстрее?
> Так задумано, или я чего не учитываю и/или могу подкрутить/донастроить?
>


> При -c 1:
>   в случае работы через ngx_ctpp получаем порядка 3.8-3.9K r/s
>   в случае работы через php_ctpp получаем порядка 1-1.1К r/s

Не видно где тут nginx+php-fpm быстрее. Правильно "почему связка X в
при тестировании методом Y оказалась быстрее". А это уже совсем другой
вопрос.


P.S.: из-за качества кода, ab всегда будет давать неверное
представление о реальной пропускной способности системы. Особенно с -c
>1. Попробуйте httperf/siege.


Подробная информация о списке рассылки nginx-ru