Die Fehlerbehebung bei einem langsamen Netzwerk oder Netzwerkpaketverlusten kann schwierig sein. Zusätzlich zu einer langsameren Netzwerkkommunikation können weitere Symptome beobachtet werden, z. B. :
- Versuche, sich mit ssh und/oder sftp mit einem Server zu verbinden, führen zu Zeitüberschreitungen oder einer verzögerten Antwort.
- Wenn die Netzwerklast hoch wird, wird eine hohe Anzahl von Netzwerkübertragungen beobachtet.
- In der Ausgabe des Befehls „ifconfig eth[x]“ kann eine große Anzahl von Paketverlusten zu sehen sein.
Einige andere Symptome umfassen auch:
– Die Ausgabe des Befehls:netstat -s zeigt steigende Werte für die folgenden Statistiken :(mehrmals von ‘netstat -s’ ausführen):
13336 packets pruned from receive queue because of socket buffer overrun 516 times the listen queue of a socket overflowed 516 SYNs to LISTEN sockets ignored 2040077 packets collapsed in receive queue due to low socket buffer TCPBacklogDrop: 744165
– Die Ausgabe des Befehls:ethtool -S eth[x] zeigt steigende Werte gegen den Zähler:„rx_fw_discards“:
rx_fw_discards: 4493
Ursachen für langsamere Netzwerkleistung
Es kann mehrere Gründe für eine langsamere Netzwerkleistung geben. Aber einige der möglichen Ursachen sind:
- Das Netzwerk ist bereits stark ausgelastet, bis zu seiner maximalen Kapazität, und es kommt zu Überlastungen.
- Die konfigurierten Empfangspuffer reichen für die Netzwerklast nicht aus.
- Es gibt Paketverluste aufgrund von Fehlern auf der physikalischen Ebene.
Fehlerbehebung bei langsamer Netzwerkleistung
1. Überprüfen Sie den Netzwerkdurchsatz mit dem iperf-Tool und stellen Sie fest, ob sich die Auslastung der Netzwerkbandbreite dem beobachteten maximalen Durchsatz nähert.
So verwenden Sie Iperf zum Testen der Netzwerkleistung unter Linux2. Stellen Sie die Werte für die Netzwerkparameter entsprechend ein, um den maximalen Netzwerkdurchsatz zu unterstützen. Suchen Sie den Wert des Bandbreitenverzögerungsprodukts (BDP) und stellen Sie die Netzwerkpuffergröße entsprechend ein. Sie errechnet sich aus dem Produkt der Verbindungsbandbreite und der Round Trip Time.
Zum Beispiel:
– Für ein 1-Gb/s-Netzwerk und eine Roundtrip-Zeit von 0,1 s ist BDP =(0,1 * 10^9)/8. Legen Sie in einem solchen Netzwerk die folgenden Parameterwerte in der Datei fest:/etc/sysctl.conf
# vi /etc/sysctl.conf net.core.rmem_max = 12500000 net.core.wmem_max = 12500000 net.ipv4.tcp_rmem = 4096 87380 12500000 net.ipv4.tcp_wmem = 4096 65536 12500000
Und erhöhen Sie auch die folgenden Parameter:
# vi /etc/sysctl.conf net.core.netdev_max_backlog = 30000 net.ipv4.tcp_max_syn_backlog = 4096
Führen Sie dann den Befehl aus:
# sysctl -p
a) Für beide Änderungen ist kein Systemneustart erforderlich.
b) Posten Sie diese Änderung, es ist erforderlich, die Ausgabe des Befehls „netstat -s“ zu überwachen und zu prüfen, ob die folgenden Zähler immer noch ansteigen:
packets pruned from receive queue because of socket buffer overrun times the listen queue of a socket overflowed SYNs to LISTEN sockets ignored packets collapsed in receive queue due to low socket buffer TCPBacklogDrop
3. Erhöhen Sie die RX-Ringpuffergröße der NIC. Beim Festlegen dieser Zahl gibt es einen Kompromiss. Ein größerer Wert könnte die Verarbeitung der Pakete verzögern und ein niedrigerer Wert könnte zu Paketverlusten führen, wenn der entsprechende Treiber bei der Verarbeitung der eingehenden Pakete auf Verzögerung stößt.
a) Beginnen Sie im Allgemeinen mit der Verdoppelung der RX-Ringgröße und beobachten Sie die Ausgabe des Befehls „ethtool -S eth[x]“.
# ethtool -G eth[x] rx 512
b) Um diese Änderung dauerhaft zu machen, fügen Sie Folgendes an die Datei an:/etc/sysconfig/network-scripts/ifcfg-eth[x] :
# vi /etc/sysconfig/network-scripts/ifcfg-eth[x] ETHTOOL_OPTS="-G rx 512"