ПРОЕКТЫ 


  АРХИВ 


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 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



 




Copyright © Lexa Software, 1996-2009.