client timed out & readv() failed
Evgeniy Berdnikov
bgx на protva.ru
Пт Мар 4 07:50:32 UTC 2016
On Fri, Mar 04, 2016 at 05:24:31AM +0300, Maxim Dounin wrote:
> > > Так или иначе - "Connection reset by peer" при живом бекенде как
> > > бы намекает на то, что в первую очередь надо смотреть, что
> > > происходит в сети.
> >
> > Я бы скорее подозревал наличие какой-то баги в сетевой карте.
> >
> > Например, в неправильном подсчёте чексуммы для пакетов с опцией sack
> > при включенном rx/tx checksumming offload'е, из-за чего все пакеты при
> > ретрасмитах дропаются. Коннекция умирает по таймауту. Но при этом
> > закрывается пакетом RST, который идёт без sack и потому доходит до
> > ядра получателя, вот и "Connection reset by peer". Так как насытить
> > линк 10G непросто, то потерь мало, но стоит хоть одному фрейму
> > пропасть -- sack, затем ретрансмиссии с sack, таймаут, reset.
>
> В таком сценарии непонятно, почему бекенд не видит ошибку сразу же, а
> ждёт ещё минуту после RST, после чего закрывает соединение по
> таймауту.
Да, верно. Для начала я бы предложил проверить, включены ли tcp timestamps
с обеих сторон. Ну и поиграться с отключением разных offload'ов,
попробовать отключить sack, уменьшить window scale до 3-4.
--
Eugene Berdnikov
Подробная информация о списке рассылки nginx-ru