← TechNotes

UDP-буферы ядра при высокой нагрузке: rmem, backlog и молчаливые потери

28 сентября 2026

Симптом: сервис на UDP деградирует «сам по себе», ошибок в логах ноль. UDP не жалуется — он молча дропает. Считаем дропы правильно:

nstat -az | grep -i udprcvbuf   # смотрим ПРИРОСТ за интервал, не абсолют!
ss -ulpn                        # кто слушает и с какими буферами
sysctl net.core.netdev_max_backlog   # live-значение, а не то, что в файле

Минимальный комплект для загруженного UDP-приёмника:

net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.core.netdev_max_backlog = 10000

netdev_max_backlog по умолчанию 1024 — при десятке тысяч пакетов в секунду и просадке CPU на 100 мс очередь переполняется, и пакеты исчезают до сокетов. И не забудьте, что ключи net.netfilter.* применяются только если модуль nf_conntrack уже загружен — типичная причина «sysctl применён с ошибкой, а я не заметил».

← назад