weight в upstream

Igor Sysoev is at rambler-co.ru
Wed Sep 27 00:50:03 MSD 2006


On Sat, 23 Sep 2006, Sergey Serov wrote:

> Есть проблемы с использованием weight в upstream в целях распределения
> нагрузки.
> Если вес выставлен одинаковый, то нагрузка распределяется равномерно.
> Пример:
> upstream test_backend {
>        server localhost:59040 weight=10000;
>        server other_server:59040 weight=10000;
> }
>
> Если же выставить разный вес, то нагрузка распределяется неравномерно по
> времени, каждые десять минут меняется сервер и все. Сужу об этом по графикам
> загрузки серверов. 10 минут все запросы идут на один сервер, затем 10 мин. на
> другой.
> Пример:
>
> upstream test_backend {
>        server localhost:59040 weight=10000;
>        server other_server:59040 weight=5000;
> }
>
> location / {
>            expires epoch;
>            fastcgi_pass    test_backend;
>            fastcgi_upstream_max_fails 0;
>            fastcgi_next_upstream error timeout invalid_header http_500;
>            include fastcgi_param.conf;
> }
>
> Но обнаружил, что если цель треть нагрузки отправлять на другой сервер, то
> такое помогает:
>
> upstream test_backend {
>        server localhost:59040 weight=10000;
>        server localhost:59040 weight=10000;
>        server other_server:59040 weight=10000;
> }

Да, сейчас алгоритм работает так: берётся вес апстрима и пока
не уменьшиться до нуля, к следующему не переходим, поэтому большие
веса неравномерно распределяют нагрузку. Я планирую в скором времени
сделать алгоритм, который бы равномерно распределял запросы.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list