как узнать, какие пакеты были сброшены - PullRequest
11 голосов
/ 24 января 2012

Я получаю тысячи сброшенных пакетов с сетевой карты 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

Пакеты сбрасываются в пакетах от 500 до 5000 пакетов несколько раз в час. Сервер (на котором работает Postgres) работает нормально - раздражают только dropps.

Попробовав много разных вещей, я спрашиваю: как я могу узнать, откуда пришли пакеты и почему они были отброшены?

Ответы [ 3 ]

12 голосов
/ 26 января 2012

Отброшенный пакет означает, что буфер, который используется для хранения пакета для пересылки / обработки, заполнен.Процесс поиска данных пакета для получения информации подразумевает, что у вас есть данные, на которые нужно обратить внимание в первую очередь (чего у вас нет, потому что не было места для их хранения).

Хороший способ обойтиэто, так что вы можете увидеть, какие данные отбрасываются, это просмотреть дамп вашего трафика для запросов повторной передачи TCP, покидающих ваш сервер.Если по какой-либо причине отсутствует TCP-пакет, ваш сервер запросит его повторную отправку.Повторная передача предоставит вам контекст разговора, который вы ищете.

Я бы действительно посоветовал взглянуть на коммутатор / маршрутизатор, к которому подключен ваш сервер.Он сможет дать вам хорошее представление о потере и пропускной способности через интерфейс к вашему серверу, что позволит вам, например, диагностировать, если ваша карта слишком медленная для соединения.

РЕДАКТИРОВАТЬ

В этом блоге цитируется инструмент под названием dropwatch, который также может дать вам некоторые подсказки.

8 голосов
/ 08 июня 2015

Вы можете столкнуться с 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.

4 голосов
/ 28 марта 2014

(В пользу тех, кто приходит к этому через поиск) Я видел ту же проблему (также с модулем bnx2, IIRC).

Вы можете попробовать отключить службу irqbalance.В моем случае это полностью остановило решение.

Обратите также внимание, что не так давно было много обновлений (RHEL 6) для несбалансированности.Обновления прошивки также должны быть проверены как для основной системы, так и для платы Ethernet.

Мы видели только очень большую подсеть с очень большим количеством широковещательной / многоадресной активности.Мы не видели этого на том же оборудовании в менее шумной - но все еще очень активной - части сети.

Потенциально, установка размера кольцевого буфера Ethernet для сетевой платы также может быть полезной.Я знаю, что в этой загруженной сети были некоторые изменения для sysctl ...

...