setsockopt(TCP_NODELAY) failed (22: Invalid argument)

Igor Sysoev is at rambler-co.ru
Thu Jan 10 10:54:39 MSK 2008


On Thu, Jan 10, 2008 at 10:36:57AM +0300, Alexey Rymonin wrote:

> Hello Igor,
> 
> Monday, January 7, 2008, 11:25:34 PM, you wrote:
> 
> > On Sat, Jan 05, 2008 at 03:33:10PM +0300, Alexey Rymonin wrote:
> 
> >>    Воспроизводится гарантированно если под Оперой открыть любой
> >>    статический файл и подержать
> >> 
> >>    Ctrl-R некоторое время...
> 
> > Ошибка похожа на ошибку во FreeBSD 6.x, когда возвращался EINVAL при
> > shutdown() или закрытии сокета, который закрыли с другой стороны с RST:
> > строки
> > setsockopt(TCP_NODELAY) failed (22: Invalid argument) while keepalive
> > перемежаются с
> > client ... closed keepalive connection (131: Connection reset by peer)
> 
> Игорь, я правильно понял, что если keepalive соединение закрывается со
> стороны клиента, то при попытке setsockopt(TCP_NODELAY) мы вместо
> нормальной ошибки  closed keepalive connection (131: Connection reset by peer)
> получаем EINVAL ?

В обоих случаях случах клиент закрывает соединение с RST.
И в обоих случаях ошибка должна быть (131: Connection reset by peer).

> Вроде как так оно и должно быть, а Connection reset by peer вообще в
> мануале не нашел :-)
> EINVAL                  The specified option is  invalid  at
>                         the  specified  socket level, or the
>                         socket has been shut down
> 
> А что с этим делать в результате? у меня спама об этой ошибке на почту
> валится больше чем обычног спама :-). Может для солярки перевести эту
> ошибку на уровень DEBUG...

Долбить SUN. EINVAL - серьёзная ошибка, означает, что программа передаёт
в ядро что-то неверное - это повод искать ошибку в программе. А здесь никаких
ошибок нет, просто ядро из-за RST перевело сокет в non-connected состояние.
FreeBSD в таких ситуациях возвращает ECONNRESET.

Можно писать эту ошибку на уровень info.

> и еще... точно также стало очень много phantom event... может и ее на
> уровень debug перевести?

Да, можно.


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list