ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: балансировка конн екций между воркерами



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



 




Copyright © Lexa Software, 1996-2009.