Guten Morgen
Auf einem Linuxrechner (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) läuft eine Applikation, welche aus drei Programmen besteht die per Sockets (tcp) miteinander kommunizieren.
Mit # watch -n 1 ‚netstat -npat‘ habe ich herausgefunden, dass es teilweise Probleme gibt beim Verbindungsabbau.
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 1 0 192.168.0.86:8001 192.168.0.86:33653 CLOSE\_WAIT 13462/prog1
tcp 0 0 192.168.0.86:33653 192.168.0.86:8001 FIN\_WAIT2 -
FIN_WAIT2 verschwindet nach einiger Zeit, CLOSE_WAIT bleibt aber. Gemäss folgernder Auflistung schickt also Station(1) kein ACK und Station(2) wartet vergebens im CLOSE_WAIT Status.
Station(1): Station(2):
---------- -----------
LISTEN ----FIN---\> FIN\_WAIT\_1
TIME\_WAIT
\> TIME\_WAIT
\> 2xMSL (Maximum Segment Lifetime)
\> Waitstate to discard late tcp segments
Mein Problem ist nun zu detektieren, welches der drei Programme kein ACK sendet, da es anscheinend schon beendet ist (Annahme aufgrund des „-“(PID/Program name) hinter FIN_WAIT2). Kann die Ausgabe von # watch -n 1 ‚netstat -npat‘ irgendwie aufgezeichnet werden? z.B. alle 100ms (watch -n 0.1)?
Besten Dank und Gruss
Olli