балансировка коннекций между воркерами
Igor Sysoev
is at rambler-co.ru
Tue Nov 25 10:12:10 MSK 2008
On Mon, Nov 24, 2008 at 11:33:16PM +0300, Maxim Dounin wrote:
> Hello!
>
> On Mon, Nov 24, 2008 at 10:23:16PM +0300, Anton Yuzhaninov 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.
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list