Как веб-серверы избегают TIME_WAIT? - PullRequest
10 голосов
/ 18 сентября 2010

Я пишу простой HTTP-сервер и узнаю о TIME_WAIT. Как реальные веб-серверы в тяжелых средах обрабатывают запросы тысяч пользователей, при этом все сокеты не застревают в TIME_WAIT после обработки запроса? (Не спрашивать о сохранении активности - это помогло бы для одного клиента, но не для тысяч различных клиентов, проходящих через него).

Я читал, что вы пытаетесь сначала заставить клиента закрыться, чтобы все TIME_WAIT распределялись среди всех клиентов, а не концентрировались на сервере.

Как это сделать? В какой-то момент сервер должен вызвать close / closesocket.

1 Ответ

13 голосов
/ 18 сентября 2010

Пир, который инициирует активное закрытие, является тем, который входит в TIME_WAIT.Поэтому, пока клиент закрывает соединение, клиент получает TIME_WAIT, а не сервер.Я подробнее расскажу об этом в этой записи блога .

...