Предположим, что есть клиент, который устанавливает много кратковременных подключений к серверу.
Если клиент закрывает соединение, на стороне клиента будет много портов в состоянии TIME_WAIT
. Поскольку у клиента заканчиваются локальные порты, становится невозможным быстро предпринять новую попытку подключения.
Если сервер закрывает соединение, я вижу много TIME_WAIT
с на стороне сервера. Тем не менее, это наносит вред? Клиент (или другие клиенты) может продолжать предпринимать попытки подключения, поскольку у него никогда не заканчиваются локальные порты, и число состояний TIME_WAIT
будет увеличиваться на стороне сервера. Что происходит в конце концов? Что-то плохое случается? (замедление, сбой, потеря соединения и т. д.)
Обратите внимание, что мой вопрос не "Какова цель TIME_WAIT
?" но "Что произойдет, если на сервере так много TIME_WAIT
состояний?" Я уже знаю, что происходит, когда соединение закрывается в TCP / IP и почему требуется состояние TIME_WAIT
. Я не пытаюсь решить проблему, а просто хочу знать, в чем ее потенциальная проблема.
Проще говоря, скажем netstat -nat | grep :8080 | grep TIME_WAIT | wc -l
печатает 100000
. Что случилось бы? Сетевой стек O / S замедляется? Ошибка "Слишком много открытых файлов"? Или просто не о чем беспокоиться?