Linuxサーバーで通信遅延やタイムアウトが発生し、 確認した結果「パケットロスが起きている」ことが分かった。
次に必要なのは、 「なぜパケットロスが発生しているのか」を正しく切り分けることです。
本記事では、 Linuxで発生するパケットロスの原因を NIC・MTU・仮想環境の観点から一覧で整理し、 それぞれの確認ポイントと解決の判断基準を解説します。
目次
結論:パケットロスの原因は1箇所ではない
パケットロスは、
- OS設定
- NIC・ドライバ
- 仮想化レイヤー
- ネットワーク機器
複数レイヤーの要因が重なって発生することがほとんどです。
原因① NICの処理能力不足・ドロップ
典型的な症状
- トラフィック増加時に通信が不安定
- CPU idle は高いのに通信が遅い
確認コマンド
ip -s link
見るべきポイント
- RX dropped
- TX dropped
これらが増え続けている場合、 NICキュー溢れや処理能力不足が疑われます。
解決の判断基準
トラフィック発生時でも dropped が増えなくなれば改善です。
原因② NICドライバ・ファームウェア問題
典型的な症状
- 特定OS・特定カーネルでのみ発生
- 再起動で一時的に改善
確認コマンド
ethtool -i eth0
ethtool -S eth0
判断ポイント
- エラーカウンタが増加
- 古いドライバ・FWを使用
この場合、OSより下のレイヤーに原因があります。
原因③ MTU不一致
なぜ起きるか
通信経路のどこかで MTU が小さいと、
- フラグメント
- ICMP blocked
によりパケットが破棄されます。
確認方法
ip link show
通信先との MTU が一致しているかを確認します。
解決の判断基準
MTUを揃えた後、
- ping(DF指定)で疎通確認
- アプリ通信が安定
すれば改善と判断できます。
原因④ 仮想環境(vSwitch・オーバーコミット)
よくある環境
- VMware
- KVM
- クラウド環境
典型的な症状
- 特定VMだけ通信が遅い
- ホスト負荷に比例してロスが増える
原因例
- vNICキュー不足
- vSwitch輻輳
- 帯域制限
この場合、ゲストOS側では異常が見えにくい点が特徴です。
原因⑤ TCP再送・輻輳制御
確認方法
netstat -s | grep -i retrans
ss -s
TCP再送が多発している場合、
- 軽微なパケットロス
- 遅延による再送
が発生しています。
原因⑥ ネットワーク機器(スイッチ・FW)
Linux側で問題が見えない場合、
- ポートエラー
- バッファ溢れ
- FWのレート制限
といった外部要因を疑います。
原因と確認ポイントまとめ
| 原因 | 主な確認点 |
|---|---|
| NIC処理能力 | RX/TX dropped |
| ドライバ/FW | ethtool エラー |
| MTU不一致 | MTU設定・DF ping |
| 仮想環境 | vSwitch/ホスト負荷 |
| TCP再送 | retransmits |
まとめ
Linuxでのパケットロスは、
- NIC
- MTU
- 仮想化レイヤー
といった複数要因を切り分けて初めて解決できます。
「ネットワークが悪い」と決めつけず、 Linux上で事実を積み上げて判断することが重要です。
あわせて読みたい


Linuxでパケットロスが起きているか確認する方法
サーバーのレスポンスが悪い、通信が途切れる、タイムアウトが発生する。 このようなとき、 本当にパケットロスが発生しているのかを Linuxサーバー上で正しく確認でき…
