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