Re: как согласовать proxy_connect_timeout и Initial RTO ?
Maxim Dounin
mdounin на mdounin.ru
Пт Окт 26 15:09:56 UTC 2018
Hello!
On Fri, Oct 26, 2018 at 12:35:21PM +0500, Илья Шипицин wrote:
> привет,
>
> возьмем, к примеру, Linux, у него ретрансмит первоначального SYN жестко
> задан 3 сек (меняется только патчем ядра)
>
> допустим, мы хотим отзывчивость нашего приложения, у нас достаточно реплик,
> мы задаем
>
> proxy_connect_timeout 100ms;
>
> выглядит логично, но в случае пиковой загрузки канала и сброса
> первоначального SYN получается следующее
>
> а) ядро переотправило бы пакет и все было бы хорошо, но это было бы через 3
> сек
> б) мы ждем ACK в течение 100мс
>
> есть какие-то бест практисы, как с этим работать ?
IMHO, в зависимости от внешних факторов имеет смысл использовать
два подхода:
1. Ставить таймауты так, чтобы хотя бы один ретрансмит оно
переживало. BTW, на современных линуксах RTO уже давно 1 секунда,
RFC6298.
2. Ставить таймауты как угодно, и при необходимости полагаться на
proxy_next_upstream и/или error_page. Если бэкенд один - то для
работы proxy_next_upstream можно добавить тот же IP-адрес ещё раз.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru