On Thu, Aug 16, 2007 at 09:59:52AM +0400, Alexey Rymonin wrote:
> > On Wed, Aug 15, 2007 at 08:47:24PM +0400, Alexey Rymonin wrote:
>
> >> 2007/08/15 09:21:36 [crit] 3725#0: *364930 setsockopt(TCP_NODELAY)
> >> failed (22: Invalid argument) while keepalive, client: 89.207.94.130
>
> > Если клиент закрыл соединение, то по идее, должно быть что-то вроде
> > Connection reset by peer или Socket is not connected, хотя, возможно,
> > в Солярисе и по-другому.
>
> Единственное, что я нашел еще это
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6378870
> Интерес там представляет следующее
> On Solaris the setsockopt(3SOCKET) call returns EINVAL when the connection is
> reset.
>
> А вообще у нее такие ошибки:
>
> ERRORS
> The getsockopt() and setsockopt() calls succeed unless:
> EINVAL The specified option is invalid at
> the specified socket level, or the
> socket has been shut down.
Могли бы сделать ENOTCONN или EPIPE.
А сейчас это не отличимо от ситуации, когда программа передают мусор в ядро.
> К сожалению не могу сказать, отличаются ли они от стандартных, но в
> линухе у меня список гораздо короче...
>
> > Возможно, это ошибка в nginx'е, а, может быть, в - Солярисе. У Соляриса
> > есть проблемы с sendfilev() и event ports, так что вполне могут быть
> > и здесь.
>
> Я пока на /dev/poll сижу, так как event ports у меня что-то очень
> таращило. Все время что-то не дозагружалось.... Но вроде как event ports
> стали совершенно нормально
> работать после того, как я поправил маленький косяк в ipf, связанный с
> ошибкой при использовании keep state... косяк был очень противный, так
> как проявлялся не всегда, а только при определенных
> последовательностях открытия соединения.... Вроде все открывалось, в
> таблицы состояний все записывалось, но через некоторое время по half
> close соединение закрывалось в одну сторону и все... Причем, что самое
> забавное, это появилось после того как я поставил патч на ipf
> (125015-03, по умолчанию в u3 идет 125015-00), который
> исправил работу закрытия по half close (раньше он просто его по
> half вообще не закрывал)...
event ports в какой-то момент перестают сообщать о новых соединениях.
--
Игорь Сысоев
http://sysoev.ru