Welcome! Log In Create A New Profile

Advanced

Re: Увеличивается RPS и CPS при недоступности бэкэнда

Maxim Dounin
August 24, 2016 08:40AM
Hello!

On Wed, Aug 24, 2016 at 02:39:45AM +0300, Иван wrote:

> Здравствуйте!
>
> У нас цепочка проксей для стриминга видео (плейлисты - m3u8+чанки - ts): эджи
> от пользователей проксируют на ориджины,ориджины на источники видео (source).
>
> Почему-то при выпадании (connection timeout) одного из source взлетает rps и
> cps на соотвествующие ориджины. При высокой нагрузке настолько, что все вообще
> встает колом.
>
> nginx 1.10.1 под debian 8 из репов на nginx.org.
>
> Конфигурация upstream на эджах:
> upstream o-place {
> server ip4_1:443 fail_timeout=60 max_fails=3 weight=3;
> server ip6_1:443 fail_timeout=60 max_fails=3 weight=3;
> server ip4_2:443 fail_timeout=60 max_fails=3 weight=1;
> server ip6_2:443 fail_timeout=60 max_fails=3 weight=1;
> server ip4_3:443 fail_timeout=60 max_fails=3 backup;
> server ip6_3:443 fail_timeout=60 max_fails=3 backup;
> keepalive 500;
> }
> Каждый ориджин тут задублирован по ИП4 и ИП6 (ip4_1 и ip6_1 - это один и тот
> же сервер, так же как и ip?_2, так же как и ip?_3), так как иногда между
> серверами отваливается по отдельности либо IP6, либо IP4.
>
> У ориджинов в апстримах по одному source:
> upstream source_place {
> server ip4:443;
> keepalive 200;
> }
>
> На эджах
> proxy_next_upstream error timeout invalid_header http_500 http_502 http_504;

А что конкретно вас удивляет? Ваша конфигурация именно это и
предполгает, e.g.:

- выпал source для ресурса, при обращении к соответствующему
ресурсу origin не может достучаться до source-сервера и
возвращает 502 (или 504, если случился таймаут);

- edge-сервер видит 502 и идёт к следующему серверу в блоке
upstream;

- картина повторяется, пока не будут опрошены все сервера по
списку, т.е. суммарное количество запросов к origin-серверам для
конфигурации выше - вырастет в 4 раза.

Если это не то, что хочется получить - пересмотрите конфигурацию.
В частности, я бы рекомендовал:

- Проредить proxy_next_upstream. Если сервера, фактически,
одинаковые, то ходить на все при получении 502/504 - имеет очень
мало смысла.

- Посмотреть внимательно на proxy_next_upstream_tries (и
proxy_next_upstream_timeout),
http://nginx.org/r/proxy_next_upstream_tries/ru. По
умолчанию nginx пытается обойти все доступные сервера, однако в
сложных конфигурациях это редко является оптимальным поведением.
Директива proxy_next_upstream_tries повзволяет сделать
ограниченное количество попыток, не отключая proxy_next_upstream
совсем.

--
Maxim Dounin
http://nginx.org/

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Увеличивается RPS и CPS при недоступности бэкэнда

Иван August 23, 2016 07:42PM

Re: Увеличивается RPS и CPS при недоступности бэкэнда

Evgeniy Berdnikov August 24, 2016 03:04AM

Re: Увеличивается RPS и CPS при недоступности бэкэнда

Maxim Dounin August 24, 2016 08:40AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 138
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready