Я столкнулся с ошибками получения пакетов UDP (в Linux команда netstat -su).
У меня есть 10 процессов UDP, работающих на машине A (RHEL 5.2), и каждый из них отправляет 290-байтовый пакет 50 раз в секунду на один и тот же адрес и тот же порт UDP. На стороне получателя (Machine-B RHEL5.2) у меня есть процесс, который прослушивает этот UDP-порт. Кроме того, на компьютере B я запускаю netstat -su для проверки ошибок пакетов UDP.
Я прочитал, что мне нужно настроить мой System-B Linux sysctl, и для вышеуказанного теста я сделал следующее:
net.core.rmem_max = 33554432
net.core.netdev_max_backlog = 2000
Кроме того, я изменил размер MTU для обоих интерфейсов в Machine-A и Machine-B на 1380.
При всем вышесказанном я все еще сталкивался с увеличением ошибок приема пакетов UDP (в netstat)
Как придешь? Что-нибудь еще мне нужно настроить?
Кстати, я тоже пробовал net.core.rmem_max = 131071, но все еще сталкиваюсь с ошибками приема пакетов :(
net.core.rmem_max
- максимальное значение, которое можно установить. Однако есть также значение по умолчанию, называемое net.core.rmem_default
- Я бы тоже увеличил это.
Также вам необходимо настроить параметры буфера вашего приложения. Часто люди пытаются настроить параметры ядра, но не забывают о настройках приложения.