ip_conntrack:テーブルがいっぱいになり、パケットがドロップされる

Linuxシェル

大量のネットワーク接続を持つ忙しいサーバーでは、カーネルのテーブルがいっぱいで、Webが画像や関連するすべてのコンテンツと同じように遅くなり始めることがあります。 ログを見ると、次のようなカーネルエラーが発生することがあります。

ip_conntrack:テーブルがいっぱいになり、パケットがドロップされる

Linuxカーネルはip_conntrackを使用して各ネットワーク接続の状態を追跡し、ネットワークアクティビティが大きい場合、エントリがいっぱいになっているテーブルで終了することがあります。このエラーが発生したときです。

エラーはさまざまな方法で検出されます。

dmesg出力の検索

dmesg | grep conntrack

メッセージログファイルをリアルタイムでテーリングする

tail -f / var / log / messages | grep conntrack

あちこちのgrepをやっている

grep conntrack / var / log / messages

とにかく、エラーが見つかったら、なぜこれが起こっているのか、それを修正する方法を理解するためにいくつかのコマンドを実行する必要があります。 さぁ、始めよう:

wc -l / proc / net / ip_conntrack

現在開いている接続の数をお知らせします。

sysctl -a | grep conntrack_max

conntrackの制限を出力します。たとえば、次のようになります。

net.ipv4.netfilter.ip_conntrack_max = 65536

どのようにしてip_conntrackの値を上げることができますか?

nano -w /etc/sysctl.conf

CentOS 6.xでは、この変数を追加する必要があります:

net.nf_conntrack_max = 165536

CentOS 5.xとそれ以前はこれを試してみてください:

net.ipv4.netfilter.ip_conntrack_max = 165536

ファイルを保存し、このコマンドを実行して変更を適用します。

sysctl -p

この種のエラーが発生した場合:

エラー: "net.nf_conntrack_max"は不明なキーエラーです: "net.ipv4.ip_conntrack_max"は不明なキーです

つまり、conntrackモジュールがあなたのカーネルにロードされていないことを意味し、modprobeを使って手動でロードしようとします。

modprobe nf_conntrack

次に、変更を適用します。

sysctl -p

システムログに注意して、随時、新しいip_conntrackがあるかどうかを確認することを忘れないでください。テーブルがいっぱいになったり、パケットエラーが発生したりする場合は、値をさらに高くする必要があります。

返信を残します

このサイトはAkismetを使用して迷惑メールを減らします。 コメントの処理方法を学ぶ.