Это - установка в Вашем стеке TCP. Так как мы не знаем, какая платформа Вы идете, мы не можем сказать точно, чем это называют и как изменить его.
Таким образом, Вы используете Ubuntu. Можно использовать sysctl
уменьшать net.inet.tcp.msl
оцените половине желаемого TIME_WAIT
продолжительность (в миллисекундах - посмотрите man -S 4 tcp
), например. sysctl net.inet.tcp.msl=2500
. Остерегайтесь последствий выполнения так относительно блуждающих пакетов, которые могут прибыть после TIME_WAIT
период протекает.
Я предполагаю, что Вы имеете в виду TIME_WAIT
. Одноранговый узел, который инициирует активное завершение, является тем, который входит TIME_WAIT
(см. диаграмму изменения состояний здесь), поэтому, если Вы можете сделать, чтобы Ваш клиент закрыл соединение затем, Вы переместитесь TIME_WAIT
прочь клиенту. Дополнительную информацию см. в этом ответе и ссылке на хорошую статью о TIME_WAIT
проблемы и как решить их.
Другая альтернатива, если Вы наклоняетесь, сделала, чтобы клиент выпустил активное завершение, должен сбросить соединение установкой, задерживаются ко лжи прежде, чем закрыть его. Это вызывает RST
быть отправленным, а не FIN
.
TIME_WAIT
нормально и если Ваша производительность сервера не переносит из-за этого it' s не что-то I' d волнуются слишком много о. Когда сокет находится в TIME_WAIT
, он поднимает некоторые ресурсы, но это doesn' t означают, что соединение все еще открыто или что сервер все еще обрабатывает его.
– Len Holgate
6 April 2010 в 11:21
Сервер, который не отвечает, скорее всего, не имеет никакого отношения к количеству подключений в состоянии TIME_WAIT. Непонятно, что вы имеете в виду под «занимает сокет» - сервер уже давно должен закрыть
d сокет в этот момент.