ПРОЕКТЫ 


  АРХИВ 


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[2]: реализация алгоритма балансировки



Здравствуйте, Максим.

>> >> Есть апстрим:
>> >> 
>> >>         upstream  my_backend  {
>> >>                 server  10.0.0.1:80   weight=1       
>> >> max_fails=20    fail_timeout=3s;
>> >>                 server  10.0.0.4:80   weight=5000    
>> >> max_fails=1000  fail_timeout=3s;
>> >>                 server  10.0.0.6:80   weight=16000   
>> >> max_fails=1000  fail_timeout=3s;
>> >>                 server  10.0.0.4:80   backup;
>> >>                 server  10.0.0.6:80   backup;
>> >>         }
>> >> 
>> >> Правильно ли я понимаю, что в таком конфиге запросы пойдут следующим
>> >> образом: 1 запрос на 10.0.0.1:80, потом 5000 запросов на 10.0.0.4:80,
>> >> потом 16000 запросов на 10.0.0.6:80?
>> 
>> MD> Нет.  Веса сейчас работают приблизительно так: nginx ходит по кругу,
>> MD> уменьшая каждый раз вес на 1 и пропуска бекенды с нулевым весом.
>> MD> Когда у всех бекендов вес становится нулевым - возвращаются 
>> MD> исходные значения весов и всё повторяется.
>> 
>> MD> Т.е. в отсутствии ошибок от бекендов будет как-то так:
>> 
>> MD> 1 на .1
>> MD> 10000 по очереди между .4 и .6
>> MD> 11000 на .6.
>> 
>> Этот алгоритм получше, но всё таки не идеальный. С одним воркером на
>> 10.0.0.6 периодически будет приходить подряд много запросов. Хотя в
>> идеале, должно размазываться по времени более равномерно.
>> 
>> А в 0.6.31 так как ты описал или там какой-то другой алгоритм? Я
>> просто выдвинул своё предположение по наблюдениям за работой 0.6.31.

MD> Нет, я гоню.  Начиная с 0.6.6 появилась другая алгоритмика, и с 
MD> тех пор всё не так как написано выше.

MD> Должно распределять запросы, сохраняя соотношение между текущими 
MD> весами.  Т.е. в твоём случае это будет как-то так:

MD> 1 запрос на .1
MD> всё остальное - 1 запрос на .4, потом 3 запроса на .6

MD> В 0.6.31 должно быть также.

Это идеальный алгоритм. То что нужно.

--

С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster@xxxxxxxxxxxxx
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.




 




Copyright © Lexa Software, 1996-2009.