балансировка коннекций между воркерами
Anton Yuzhaninov
citrin at citrin.ru
Tue Nov 25 15:58:49 MSK 2008
On 25.11.2008 10:12, Igor Sysoev wrote:
>>> А как балансируются приходящие коннекции между несколькими воркерами?
>> [...]
>>
>>> Т. е. все 50k коннекций на одном воркере, а второй отдыхает.
>>>
>>> Из особенностей конфига - наличие директивы limit_rate
>>>
>>> Если убрать limit_rate то начинают работать оба воркера.
>> По умолчанию nginx работает с использованием accept_mutex'а, и при
>> малой нагрузке большая часть работы будет на одном worker'е.
>>
>> Если хочется лучшей балансировки соединений между рабочими
>> процессами - можно попробовать выключить accept_mutex:
>>
>> events {
>> accept_mutex off;
>> ...
>> }
>>
>> Однако в результате использование CPU несколько вырастет, т.к. для
>> принятия соединения будут пробуждаться все рабочие процессы, при
>> том что accept() сможет сделать только один из них.
>
> Я думаю, рост загрузки CPU при небольшом числе воркеров будет незаметен.
> Вообще, accept mutex появился в Апаче лет десять назад, когда процессоры
> и шедулеры были медленнее, а процессов - много. Называлось это thundering
> herd problem. Наверное, имеет смысл его по дефолту выключать везде,
> кроме rtsig.
>
>
IMHO не стоит отключать accept mutex.
Неравномерное распределение коннекций по воркерам под "живой"
нагрузкой не наблюдается, только при синтетическом stress-test
--
Anton Yuzhaninov
More information about the nginx-ru
mailing list