Odstraňování problémů s pomalou sítí nebo výpadky síťových paketů může být složité. Kromě pomalejší síťové komunikace mohou být pozorovány další příznaky, například:
- Pokusy o připojení k serveru pomocí ssh a/nebo sftp vedou k vypršení časového limitu nebo zpožděné odpovědi.
- Když je zatížení sítě vysoké, dochází k velkému počtu opakovaných přenosů sítě.
- Ve výstupu příkazu ” ifconfig eth[x]” může být vidět velký počet zahození paketů.
Některé další příznaky také zahrnují:
– Výstup příkazu:netstat -s zobrazuje rostoucí hodnoty pro následující statistiky :(spustit několikrát ‚netstat -s‘):
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
– Výstup příkazu :ethtool -S eth[x] ukazuje rostoucí hodnoty oproti čítači:„rx_fw_discards“:
rx_fw_discards: 4493
Příčiny pomalejšího výkonu sítě
Důvodů pro pomalejší výkon sítě může být několik. Ale některé z možných příčin jsou:
- Síť je již vysoce zatížena až na maximální kapacitu a dochází k přetížení.
- Konfigurované vyrovnávací paměti pro příjem nejsou dostatečné pro zatížení sítě.
- Dochází k zahazování paketů kvůli chybám na fyzické vrstvě.
Odstraňování problémů s pomalým výkonem sítě
1. Zkontrolujte propustnost sítě pomocí nástroje iperf a zjistěte, zda se využití šířky pásma sítě blíží maximální pozorované propustnosti.
Jak používat Iperf k testování výkonu sítě v Linuxu2. Nastavte hodnoty síťových parametrů vhodně tak, aby podporovaly maximální propustnost sítě. Najděte hodnotu Bandwidth delay product (BDP) a podle toho nastavte velikost síťové vyrovnávací paměti. Vypočítá se jako součin šířky pásma spojení a doby zpáteční cesty.
Například:
– Pro síť 1 Gb/s a zpáteční dobu 0,1 s je BDP =(0,1 * 10^9)/8. V takové síti nastavte v souboru následující hodnoty parametrů:/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
A zvyšte také následující parametry:
# vi /etc/sysctl.conf net.core.netdev_max_backlog = 30000 net.ipv4.tcp_max_syn_backlog = 4096
A pak spusťte příkaz:
# sysctl -p
a) Pro obě změny není potřeba restartovat systém.
b) Po této změně je nutné sledovat výstup příkazu „netstat -s“ a zkontrolovat, zda se následující čítače stále zvyšují:
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. Zvětšete velikost vyrovnávací paměti RX Ring NIC. Při nastavení tohoto čísla existuje kompromis. Vyšší hodnota by mohla zpozdit zpracování paketů a nižší hodnota by mohla způsobit zahození paketů, když příslušný ovladač narazí na zpoždění při zpracování příchozích paketů.
a) Obecně začněte zdvojnásobením velikosti RX Ring a sledujte výstup příkazu „ethtool -S eth[x]“.
# ethtool -G eth[x] rx 512
b) Chcete-li, aby tato změna byla trvalá, připojte k souboru následující:/etc/sysconfig/network-scripts/ifcfg-eth[x] :
# vi /etc/sysconfig/network-scripts/ifcfg-eth[x] ETHTOOL_OPTS="-G rx 512"