Was könnte dazu führen, dass so viele TIME_WAIT-verbindungen zu öffnen?

So, ich habe Eine Anwendung auf einem server, der sendet 710 HTTP-POST-Nachrichten pro Sekunde zu Anwendung B auf einem anderen server lauscht auf einem port. Die verbindungen sind nicht keep-alive, Sie sind geschlossen.

Nach ein paar Minuten, Eine Anwendung berichten, die Sie nicht öffnen können, neue verbindungen zur Anwendung B.

Ich bin mit netstat kontinuierlich auf beiden Maschinen, und sehen, dass eine große Anzahl von TIME_WAIT-verbindungen offen sind, auf jeden. Nahezu alle verbindungen zeigen, sind in TIME_WAIT. Aus der Lektüre online, es scheint, dass dies der Zustand ist, der es in 30 Sekunden (auf unseren Maschinen 30 Sekunden laut /proc/sys/net/ipv4/tcp_fin_timeout Wert) nach jeder Seite schließt die Verbindung.

Ich habe ein Skript läuft auf jeder Maschine, auf der das kontinuierlich tut:

netstat -na | grep 5774 | wc -l

und:

netstat -na | grep 5774 | grep "TIME_WAIT" | wc -l

Den Wert der einzelnen, auf jedem Rechner, scheint man rund 28.000 vor der Anwendung die Berichte, die Sie nicht öffnen können, neue verbindungen zur Anwendung B.

Habe ich gelesen, dass diese Datei: /proc/sys/net/ipv4/ip_local_port_range enthält die Gesamtanzahl der verbindungen, die gleichzeitig geöffnet sein:

$ cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000

61000 - 32768 = 28232, was Recht ist im Einklang mit den rund 28.000 TIME_WAITs ich sehe.

Meine Frage ist, wie ist es möglich, so viele verbindungen im TIME_WAIT.

Scheint es, dass bei 710 verbindungen pro Sekunde geschlossen wird, sollte ich etwa 710 * 30 Sekunden = 21300 gewachsen, der diese in einer bestimmten Zeit. Ich nehme an, dass, nur weil es 710 geöffnet wird pro Sekunde bedeutet nicht, dass es 710 geschlossen pro Sekunde...

Die einzige andere Sache, die ich denken kann, ist ein langsames OS bekommen um zu schließen Sie die Anschlüsse.

InformationsquelleAutor vmayer | 2015-10-16
Schreibe einen Kommentar