Re[2]: реализация алгоритма балансировки

Михаил Монашёв postmaster at softsearch.ru
Fri Apr 24 18:35:05 MSD 2009


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

>> Есть апстрим:
>> 
>>         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.

--

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






More information about the nginx-ru mailing list