The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Сокращение TIME_WAIT, уменьшение таймаута (timeout socket )


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: 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

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, michael (??), 14:57, 10/02/2006 [ответить]  
  • +/
    бред.
    TIME_WAIT - одно из стандартных состояний TCP соединения, в который переходит сторона осуществляющая активное закрытие соединения.
    Обойти TIME_WAIT можно только с помощью параметра SO_LINGER выставив в структуре linger l_onoff=1,l_linger=0. (тот кто это сделает будет проклят, поскольку навлечет на себя гнев богов, и кучу некорректно доставленных сегментов).
    А SO_REUSEADDR -вообще не для этого нужно.
     
  • 2, passwd (??), 01:32, 18/03/2007 [ответить]  
  • +/
    SO_LINGER - тоже не решение проблемы.. да, возможно оно у тебя сработает. Однако на некоторых системах структура просто игнорится, либо выдает ошибку.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру