|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Igor Sysoev 2:5020/400 29 Jan 2004 18:02:41 To : Lev Walkin Subject : Re: незакрытые сокеты -------------------------------------------------------------------------------- Lev Walkin <vlm@netli.com> wrote: > Igor Sysoev wrote: >> Lev Walkin <vlm@netli.com> wrote: >> >>>Slawa Olhovchenkov wrote: >>> >>>>А как можно уменьшить количество болтающихся сокетов в состоянии >>>>TIME_WAIT/FIN_WAIT_2? >>> >>>SO_REUSEADDR использовать в программе. >>>Лучше _после_ accept()'а. >> >> А как SO_REUSEADDR этому поможет ? > > я ждал этого вопроса ;) > > поможет тем, что включает широко известный в узких кругах сайд-эффект. > он заключается в том, что для новых сокетов могут использоваться > закрытые сокеты, сидящие в TIME_WAIT. Обычно они так и сидят в этом > состоянии 2MSL, но при наличии флага SO_REUSEADDR вместо создания > нового сокета ядро может выбрать вариант их реиспользования. > это не значит, что в системе совсем не будет TIME_WAIT, но это количество > имеет достаточно четкую верхнюю границу при известной загрузке. > > почему нужно делать после accept()'а? потому что флаг должен быть на > сокете сидящем в TIME_WAIT, а не в LISTEN, а некоторых других OS > (обладающих тем же сайд-эффектом, впрочем) флаги на listen-сокете > не наследуются на сокеты, получающиеся через accept(). поэтому нужно > либо #ifdef'ить, либо перестраховаться и устанавливать SO_REUSEADDR > всегда после каждого accept()'а. А где такое есть ? Поиск по фрёвым листам и lkml на предмет SO_REUSEADDR и TIME_WAIT подобной особенности SO_REUSEADDR не выявил. Единственное, в 5.2 в src/sys/netinet/tcp_subr.c rev.1.164 и 1.165 было сделано ограничение, чтобы TIME_WAIT не превышал 20% от всех используемых сокетов. -- Игорь Сысоев http://sysoev.ru --- ifmail v.2.15dev5.2 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/6577ac1e255b.html, оценка из 5, голосов 10
|