[英]how to find which packets got dropped
我從Broadcom Network Card獲得了數千個丟棄的軟件包:
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
數據包以每小時數次500到5000個數據包的速度被丟棄。 服務器(運行Postgres)運行正常 - 只是dropps很煩人。
在嘗試了很多不同的事情后,我問:我怎樣才能找到數據包的來源以及它們為什么被丟棄?
丟棄的數據包意味着用於存儲數據包以進行轉發/處理的緩沖區已滿。 查看數據包數據以獲取信息的行為意味着您首先要查看數據(您沒有這些數據,因為沒有空間存儲它)。
解決此問題的一個很好的方法是,您可以查看正在丟棄的數據,即查看流量轉儲以查找離開服務器的TCP重新傳輸請求。 當TCP數據包丟失時,無論出於何種原因,您的服務器將要求重新發送它。 重新傳輸將為您提供您正在尋找的對話上下文。
我實際上建議您查看服務器所連接的交換機/路由器。 它可以讓您很好地了解服務器接口的損耗和吞吐量,讓您診斷,例如,您的卡是否太慢,無法接通電線。
編輯
這篇博文引用了一個名為dropwatch
的工具,它也可以為你提供一些線索。
您可能會遇到https://www.novell.com/support/kb/doc.php?id=7007165 。
引用:
從內核2.6.37開始,它已經改變了丟棄數據包計數的含義。 之前,丟棄的數據包很可能是由於錯誤造成的。 現在,rx_dropped計數器顯示丟幀的統計信息,原因如下:
Softnet積壓全部 - (從/ proc / net / softnet_stat測量)
錯誤/非預期的VLAN標記
未知/未注冊的協議
服務器未配置IPv6時的IPv6幀
如果任何幀滿足這些條件,則在協議棧之前刪除它們並且rx_dropped計數器遞增。
(為了通過搜索得到的那些人的利益)我看到了同樣的問題(也使用了bnx2模塊,IIRC)。
您可以嘗試關閉irqbalance服務。 在我的情況下,它完全停止了解決方案。
還請注意,不久前,irqbalance還有大量更新(RHEL 6)。 還應檢查主系統和以太網板的固件更新。
我們看到這只是一個非常大的子網,具有大量的廣播/多播活動。 我們沒有在相同的設備上看到這個,但噪聲較小 - 但仍然非常活躍 - 是網絡的一部分。
可能也可以使用為NIC設置以太網環緩沖區大小。 我知道在繁忙的網絡上有一些sysctl的改動......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.