低速ネットワークまたはネットワーク パケット ドロップのトラブルシューティングは難しい場合があります。ネットワーク通信の速度低下に加えて、次のような追加の症状が観察される場合があります:
- ssh や sftp を使用してサーバーに接続しようとすると、タイムアウトまたは応答の遅延が発生します。
- ネットワーク負荷が高くなると、多数のネットワーク再送信が観察されます。
- 「ifconfig eth[x]」コマンドの出力に多数のパケット ドロップが見られる場合があります。
他にも次のような症状があります:
– コマンドの出力:netstat -s は、次の統計の増加する値を示します:(「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
– コマンドの出力:ethtool -S eth[x] は、カウンターに対して増加する値を示します:“rx_fw_discards”:
rx_fw_discards: 4493
ネットワーク パフォーマンスが低下する原因
ネットワーク パフォーマンスの低下には複数の理由が考えられます。しかし、考えられる原因のいくつかは次のとおりです:
- ネットワークの負荷がすでに最大容量に達しており、輻輳が発生しています。
- 構成された受信バッファは、ネットワーク負荷に対して十分ではありません。
- 物理層でのエラーによるパケット ドロップがあります。
遅いネットワーク パフォーマンスのトラブルシューティング
1. iperf ツールを使用してネットワーク スループットを確認し、ネットワーク帯域幅の使用率が観察された最大スループットに近づいているかどうかを確認します。
Iperf を使用して Linux でネットワーク パフォーマンスをテストする方法2. ネットワーク パラメーターの値を適切に設定して、最大のネットワーク スループットをサポートします。帯域幅遅延積 (BDP) の値を見つけて、それに応じてネットワーク バッファー サイズを設定します。リンク帯域幅と往復時間の積として計算されます。
例:
– 1 Gb/秒のネットワークと 0.1 秒のラウンドトリップ時間の場合、BDP=(0.1 * 10^9)/8.このようなネットワークでは、ファイルの下に次のパラメータ値を設定します:/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
また、次のパラメータも増やします:
# vi /etc/sysctl.conf net.core.netdev_max_backlog = 30000 net.ipv4.tcp_max_syn_backlog = 4096
次に、コマンドを実行します:
# sysctl -p
a) どちらの変更でも、システムの再起動は必要ありません。
b) この変更を投稿します。コマンド「netstat -s」の出力を監視し、次のカウンターがまだ増加しているかどうかを確認する必要があります:
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. NIC の RX リング バッファ サイズを増やします。この数値の設定にはトレードオフがあります。値を大きくすると、パケットの処理が遅れる可能性があり、値を小さくすると、対応するドライバーが受信パケットの処理で遅延が発生したときにパケットがドロップされる可能性があります。
a) 通常、RX リング サイズを 2 倍にすることから始め、コマンド「ethtool -S eth[x]」の出力を監視します。
# ethtool -G eth[x] rx 512
b) この変更を永続的にするには、ファイルに次を追加します:/etc/sysconfig/network-scripts/ifcfg-eth[x] :
# vi /etc/sysconfig/network-scripts/ifcfg-eth[x] ETHTOOL_OPTS="-G rx 512"