балансировка коннекций между воркерами
Kostya Alexandrov
koticka at mail.ru
Tue Nov 25 16:13:42 MSK 2008
Попробовал отключить.
Нагрузка действиетельно слала распределяться равномерно.
4 ядра (2 по 2), 6 воркеров, до этого обычно в топе висели 3, иногда
"подскакивал" 4.
Сейчас все 6. Нагрузка на камни выросла не сильно, примерно на 2%,
уменьшился CS.
Соединений около 8 тысяч. Респонз системы стал сильно лучше.
Имхо сделал бы обязательным для конфигурирования параметром.
Anton Yuzhaninov wrote:
> 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
>
More information about the nginx-ru
mailing list