| |||||||||||||||||||||
Ключевые слова: timeout, socket, (найти похожие документы)
Date: Thu, 11 Apr 2002 22:28:02 +0000 (UTC) From: Lev Walkin <vlm@netli.com> Newsgroups: fido7.ru.unix.prog Subject: Сокращение TIME_WAIT, уменьшение таймаута >>есть сервер слушает порт >>есть клиент на тойже тачке который делает очень быстро и очень много запросов >>к серверу по tcp/ip >>в какой-то момент клиент вываливвается с месагой Ресурс недоступен , > Это может быть, например, потому что у сервера переполняется очередь входящих > запросов (та, размер которой задается при listen()). Поскольку клиент находится > на той же машине, много процессорного времени выделяется именно ему, и сервер не > успевает делать им accept в оставшееся время. TIME_WAIT - это состояние серверного сокета, в котором он находится 2msl времени, чтобы собирать случайно задержавшиеся в сети пакеты. Таймаут этот можно изменять в различных операционках по разному - во FreeBSD есть sysctl на эту тему - net.inet.tcp.msl, равный тридцати секундам по умолчанию. То есть, TIME_WAIT'с будут сидеть минуту на сервере. В Линуксе избавится от них можно, например, с помощью setsockopt(SO_REUSEADDR), который заодно будет выгребать сокеты из TIME_WAIT для повторного использования для новых коннектов. -- Lev Walkin vlm@netli.com
| |||||||||||||||||||||
|
|