Broadcomネットワークカードから何千ものドロップされたパッケージを取得しています。
eth1 Link encap:Ethernet HWaddr 01:27:B0:14:DA:FE
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:2746252626 errors:0 dropped:1151734 overruns:0 frame:0
TX packets:4109502155 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:427998700000 (408171.3 Mb) TX bytes:3530782240047 (3367216.3 Mb)
Interrupt:40 Memory:d8000000-d8012700
インストールされているバージョンは次のとおりです。
filename: /lib/modules/2.6.27.54-0.2-default/kernel/drivers/net/bnx2.ko
version: 1.8.0
license: GPL
description: Broadcom NetXtreme II BCM5706/5708/5709 Driver
パケットは、1時間に数回500から5000パケットの範囲のバルクでドロップされます。サーバー(Postgresを実行している)は正常に実行されています-ドロップだけが迷惑です。
さまざまなことを試した後、私は質問しています。パケットがどこから来たのか、なぜパケットがドロップされたのかを知るにはどうすればよいですか。
(検索を介してこれに来る人々の利益のために)私は同じ問題を見ました(bnx2モジュール、IIRCでも)。
Irqbalanceサービスをオフにしてみてください。私の場合、それは解決策を完全に止めました。
また、少し前までは、irqbalanceのアップデート(RHEL 6)がたくさんあったことにも注意してください。メインシステムとイーサネットボードの両方のファームウェアアップデートも確認する必要があります。
これは、非常に大量のブロードキャスト/マルチキャストアクティビティを伴う非常に大きなサブネットのみでした。これは、ネットワークのノイズの少ない(ただし非常にアクティブな)部分の同じ機器では見られませんでした。
潜在的に、NICのイーサネットリングバッファサイズを設定することも役立つ可能性があります。そのビジーなネットワークでsysctlにいくつかの変更があったことを知っています...
ドロップされたパケットは、転送/処理のためにパケットを格納するために使用されるバッファがいっぱいであることを意味します。パケットのデータを調べて情報を探すという行為は、最初に調べるデータがあることを意味します(データを保存する余地がなかったため、そうではありません)。
これを回避する良い方法は、どのデータがドロップされているかを確認できるようにするために、トラフィックのダンプを調べて、サーバーを離れるTCP再送信要求を探すことです。aTCPパケットが欠落している、何らかの理由で、サーバーはパケットの再送信を要求します。再送信により、探している会話コンテキストが提供されます。
実際には、サーバーが接続されているスイッチ/ルーターを確認することをお勧めします。これにより、サーバーへのインターフェイスでの損失とスループットについての優れたアイデアが得られ、たとえば、カードがネットワークに対して遅すぎるかどうかを診断できます。
[〜#〜]編集[〜#〜]
このブログ投稿dropwatch
というツールを引用していますが、これからもいくつかの手がかりが得られる可能性があります。
https://www.novell.com/support/kb/doc.php?id=7007165 に遭遇する可能性があります。
見積もり:
カーネル2.6.37以降、ドロップされたパケット数の意味が変更されました。以前は、パケットのドロップはエラーが原因である可能性が最も高かった。現在、rx_droppedカウンターには、次の理由でドロップされたフレームの統計が表示されます。
ソフトネットバックログがいっぱいです-(/ proc/net/softnet_statから測定)
悪い/意図しないVLANタグ
不明/未登録のプロトコル
サーバーがIPv6用に構成されていない場合のIPv6フレーム
いずれかのフレームがこれらの条件を満たす場合、それらはプロトコルスタックの前にドロップされ、rx_droppedカウンターがインクリメントされます。