Предположим, что есть клиент, который делает много короткоживущих подключений к серверу.Какова стоимость многих TIME_WAIT на стороне сервера?
Если клиент закрывает соединение, на стороне клиента будет много портов в TIME_WAIT
. Поскольку у клиента заканчиваются локальные порты, становится невозможным быстро выполнить новую попытку подключения.
Если сервер закрывает соединение, я увижу много TIME_WAIT
s на стороне сервера. Однако это наносит какой-то вред? Клиент (или другие клиенты) может продолжать попытки подключения, поскольку он никогда не заканчивается из локальных портов, а число TIME_WAIT
будет увеличиваться на стороне сервера. Что происходит в конце концов? Что-то плохое происходит? (замедление, крушение, сброшенные соединения и т. д.)
Обратите внимание, что мой вопрос не «Какова цель TIME_WAIT
?» но «Что произойдет, если на сервере столько состояний TIME_WAIT
?» Я уже знаю, что происходит, когда соединение закрывается в TCP/IP и почему требуется состояние TIME_WAIT
. Я не пытаюсь это сделать, но просто хочу знать, в чем проблема с ним.
Проще говоря, netstat -nat | grep :8080 | grep TIME_WAIT | wc -l
отпечатки 100000
. Что случилось бы? Снижается ли сеть сети O/S? Ошибка «Слишком много открытых файлов»? Или просто не о чем беспокоиться?
Некоторые системы видят проблемы на «32K' TIME_WAIT' »http://serverfault.com/a/212127/87017 – Pacerier
Для linux есть [бумага] (https://tools.ietf.org/html/draft- faber-time-wait-avoidance-00) на основе данных через Webstone Benchmark. Также «[* Состояние« TIME-WAIT »в TCP и его влияние на занятые серверы *] (https://scholar.google.com/scholar?cluster=2607037814764769062&hl=ru&as_sdt=0,5&sciodt=0,5)». – Pacerier