Предположим, что есть клиент, который делает много короткоживущих подключений к серверу.
Если клиент закрывает соединение, в состоянии 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? Ошибка "Слишком много открытых файлов"? Или просто не о чем беспокоиться?