Mam port zablokowany przez proces, który musiałem zabić. (mały demon telnet, który się zawiesił). Proces został pomyślnie zakończony, ale port jest nadal w stanie „FIN_WAIT1”. Nie wychodzi z tego, czas oczekiwania wydaje się ustawiony na „dekadę”.
Jedynym sposobem, w jaki znalazłem uwolnienie portu, jest ponowne uruchomienie całej maszyny, co oczywiście jest czymś, czego nie chcę robić.
$ netstat -tulnap | grep FIN_WAIT1
tcp 0 13937 10.0.0.153:4000 10.0.2.46:2572 FIN_WAIT1 -
Czy ktoś wie, jak mogę odblokować ten port bez ponownego uruchamiania?
$whateveritwas
przed zastąpieniem.Powinieneś być w stanie ustawić limit czasu za pomocą
/proc/sys/net/ipv4/tcp_fin_timeout
.Wydaje się, że nie ma możliwości ręcznego wyczyszczenia gniazda.
źródło
Wygląda na to, że ustawienie tcp_orphan_retries kontroluje liczbę prób, które zostaną wykonane przed zwolnieniem portu bez serwera. Tutaj było 0, po ustawieniu na 1 porty zniknęły.
HTH
źródło
/proc/sys/net/ipv4/tcp_fin_timeout
oznacza limit czasu stanu FIN-WAIT-2, a nie FIN-WAIT-1. Powinieneś wybrać trasę tcpkill lub spróbować zagrać z czasem podtrzymania,/proc/sys/net/ipv4/tcp_keepalive_*
aby wymusić zabicie przez SO.źródło
Uruchomienie tych kroków pod identyfikatorem katalogu głównego i zostało dla mnie wyczyszczone:
Przechwyć ustawienie jądra, aby zmienić zmienną
Tymczasowo ustaw maksymalną liczbę sierot na 0
Sprawdź, czy problematyczny port nie jest już używany
Poczekaj chwilę i powtórz powyższy krok, jeśli to konieczne, aż powyższe polecenie nie zwróci żadnych wierszy
Zresetuj parametr jądra tcp_max_orphans z powrotem do pierwotnej wartości z powyższej zmiennej
źródło
Aplikacja zamknęła stronę połączenia, gniazdo czeka teraz na zdalną stronę, aby potwierdzić to zamknięcie. Jeśli masz problem z trzymaniem wielu gniazd w FIN_WAIT1 , powinieneś postępować zgodnie z radą Manniego powyżej.
źródło
W jądrze Linuksa> = 4.9 możesz użyć
ss
polecenia z iproute2 z klawiszem -Kss -K dst 192.168.1.214 dport = 49029 jądro musi zostać skompilowane z włączoną opcją CONFIG_INET_DIAG_DESTROY.
przez /unix//a/511691/43898
źródło
Może tcpkill pomógłby? Więcej tutaj: http://www.cyberciti.biz/howto/question/linux/kill-tcp-connection-using-linux-netstat.php
źródło
może to pomóc:
źródło