|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Igor Sysoev 2:5020/400 29 Jun 2004 19:08:25 To : Lev Walkin Subject : Re: CLOSE_WAIT -------------------------------------------------------------------------------- Lev Walkin <vlm@netli.com> wrote: > > Igor Sysoev wrote: >> Lev Walkin <vlm@netli.com> wrote: >> >> >>>Victor Sudakov wrote: >>> >>>>Коллеги, что может означать следующая ситуация? >>>> >>>>Согласно netstat, TCP соединение бесконечно висит в состоянии CLOSE_WAIT, >>>> >>>>но при этом между его участниками идёт вот такой обмен (см. tcpdump на >>>>http://noc.tomsk.ru/strange3073.dmp ). >>> >>> >>>Это плохой клиент, который запросил данные, но не читает их из сокета. >>>POP3 сервер производит window probing раз в минуту, и у него нет >>>возможности послать FIN, так как клиент не принимает больше данных >>>из-за того, что его входной буфер забит. >>> >>>POP3 сервер находится на [Free]BSD машине. Клиент - из семейства NT. >> >> >> Правильно ли я понимаю, что если сервер перед close() выставит SO_LINGER >> в 0 секунд, то при close() туда вместо FIN пойдёт RST и сервер забудет >> об этом соединении ? > > Да. Только вполне возможно, если сервер делает close() только после > того, как запихнет все данные в буфер сокета, что он будет пытаться > делать это бесконечно. Hапример, если буфер сокета - 64k, а сервер > пытается послать 65k. при этом он будет в основном висеть на ожидании > POLLIN или чего-то аналогичного. > > Вывод: в серверах должны быть жесткие таймауты на соединения, > независимо от статуса их завершенности (сброшенности буферов > приложения в ядро). Я имел ввиду именно close() по таймауту. -- Игорь Сысоев http://sysoev.ru --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/6577bba68005.html, оценка из 5, голосов 10
|