Re: upstream c keepalive и периодически 502 ошибка
waster
nginx-forum на forum.nginx.org
Вт Окт 18 09:31:00 UTC 2016
Maxim Dounin Wrote:
-------------------------------------------------------
> Соединение с бекендом, какое бы оно ни было постоянное,
> периодически закрывается. Если это происходит в тот момент, когда
> nginx послал в соединение запрос - с точки зрения nginx'а это
> выглядит как ошибка.
>
> Чтобы nginx имел возможность в такой ситуации перепослать запрос
> ещё раз - стоит описать ещё один server в блоке upstream, можно
> тот же самый. Тогда вместо возврата 502 клиенту nginx пойдёт на
> следующий сервер в соответствии с настройкой proxy_next_upstream,
> и вернёт пользователю полученный ответ.
Похоже, что даже с одним server в блоке upstream уже происходит перепосылка
запроса, судя по нескольким ответам, сначала 502, потом 200 в логах в
$upstream_status, предположу, что такое поведение обеспечивается за счет
max_fails. То есть можно игнорировать эти ошибки или может как-то можно их
минимизировать, скажем, выставив keepalive_timeout на бэкенде больше, чем
что-либо на прокси (правда не знаю что)?
> Задержки в $upstream_connect_time - это скорее всего либо потери
> пакетов, либо переполненная listen queue на бекенде (что на
> Linux'е при настройках по умолчанию выглядит как потеря
> SYN-пакета).
Вряд ли это переполненная очередь на бэкенде, там сейчас backlog=65535 и
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535 и net.ipv4.ip_local_port_range = 16384
65535. Такие же задержки возникают и на уровне upstream_header_time,
например, upstream_header_time > 1, а upstream_connect_time=0.02. Бывает
вообще только upstream_response_time > 1, а все остальные = 0.02. Это и
странно, поскольку трафик и нагрузка на бэкенде небольшие.
Большое спасибо за ответы.
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,270342,270350#msg-270350
Подробная информация о списке рассылки nginx-ru