|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Lev Walkin 2:5020/400 29 Jan 2004 16:47:01 To : Igor Sysoev Subject : Re: незакрытые сокеты --------------------------------------------------------------------------------
Igor Sysoev wrote:
> Lev Walkin <vlm@netli.com> wrote:
>
>
>>Slawa Olhovchenkov wrote:
>>
>>>Hello All!
>>>
>>>А как можно уменьшить количество болтающихся сокетов в состоянии
>>>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()'а.
--
Lev Walkin
vlm@netli.com
--- ifmail v.2.15dev5.2
* Origin: Netli, Inc. (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/91040fda2f30.html, оценка из 5, голосов 10
|