ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: setsockopt(TCP_NODELAY) failed (22: Invalid argument)



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



 




Copyright © Lexa Software, 1996-2009.