Закрытие потерянных TCP-соединений на удивление сложно в Linux. Этот вопрос поднимался здесь, здесь, здесь и здесь ; однако ни один из подходов не работал для меня.
Вызов close()
не работает, потому что нет связанного процесса. Установка CurrPorts
не будет работать, потому что я не на Windows. Подход к установке значения tcp_max_orphans
равным нулю не увенчался успехом (и я предполагаю, что даже если бы он это сделал , это не могло бы немедленно разорвать соединение). Запуск tcpkill
не работает, потому что нет активного трафика. Запуск killcx
завершается сбоем no response from child, operation may have failed
завершилась неудачно Сбой tcp_killer от Google с Socket not found for connection
. Установка короткого тайм-аута и ожидание его не вариант, потому что я должен немедленно повторно использовать IP и порт.
На протяжении всего этого netstat -tp
постоянно показывает, что соединение живо:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 156 localhost:54494 localhost:xmpp-client FIN_WAIT1 -
Какой способ немедленно убить это TCP соединение?