QoS

Gena Makhomed gmm at csdoc.com
Fri May 23 15:37:15 MSD 2008


On Friday, May 23, 2008 at 0:06:35, Kostya Alexandrov wrote:

>>> другой вариант решения - запустить два различных экземпляра nginx
>>> (на разных IP) - один для отдачи статики, а другой для отдачи html.

KA> Через три nginx. Один фронтендом и в зависимости от локейшена
KA> проксирует или на один или на второй. Это работает хорошо, сам так раздаю.

KA> На счет разных пулов воркеров для разных задач - супер идея, имхо.

а это как раз и есть реализация, которую можно попробовать
уже прямо сейчас, если сделать 1 nginx в качестве frontend`а
(с proxy_buffering off), и несколько nginx в качестве backend`ов,
один - для обслуживания запросов к memcached+fastcgi+http_proxy,
второй - для static_best_effort, третий для static_idle_priority.
io scheduling class and priority можно будет задать через ionice.

в результате получится три отдельных пула воркеров для разных задач.

>> ==========================================================================
>>
>> хотя, такого же эффекта очень быстрой отдачи html можно было бы достичь,
>> если внутри nginx разделить все воркеры на несколько различных классов:
>>
>> - 0 class/pool, занимается только отдачей из memcached,
>> - 1 class/pool, занимается только отдачей от fastcgi backend`ов,
>> - 2 class/pool, занимается только отдачей от http_proxy backend`ов,
>> - 3 class/pool, занимается только отдачей содержимого cache.
>> - 4 class/pool, занимается только отдачей static_best_effort.
>> - 5 class/pool, занимается только отдачей static_idle_priority.
>>
>> PS реализовать поддержку aio - это вариант борьбы с этой же проблемой,
>> только другим способом: сделать так, чтобы все воркеры на диске (почти)
>> не блокировались. не знаю, какой вариант будет лучше (надежнее и быстрее).
>>
>> PPS в случае DDoS-атаки / большой нагрузки полезной была бы возможность
>> включить QoS для отдачи статики - какие файлы отдавать в первую очередь,
>> а какие можно задержать / отбросить. с помощью aio это труднореализуемо.
>>
>> если воркеры будут разделены на классы - disk io QoS можно реализовать
>> средствами операционной системы через io scheduling class and priority
>> ioprio_set(2), чтобы дисковая подсистема сервера работала с учетом QoS
>> даже после того, как nginx уже отправил запрос на чтение ядру системы.
>>
>> ==========================================================================

-- 
Best regards,
 Gena






More information about the nginx-ru mailing list