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