Назад | Перейти на главную страницу

Нет доступного буферного пространства и настройка с помощью sysctl

Не совсем сетевой парень, так что потерпите меня.

В настоящее время я размещаю веб-приложение, которое периодически отправляет UDP на все IP-адреса в своей подсети. Это 2048 IP-адресов. Моя проблема в том, что это бросает No buffer space available через некоторое время.

Я скорректировал некоторые значения, используя sysctl а именно:

И заработало, но сильно замедляет время отклика сервера. Это написано в Java и работает в fit-pc2 (1.1ghz, 1gb RAM, SD-карта) Ой, ужас.

Учитывая ограниченные ресурсы, как мне оптимизировать параметры сервера / ядра для решения No buffer space available проблема?

Это не настройка sysctl как таковая, ваш сервер замедляется, так как он должен постоянно сканировать таблицу arp с 2k записями.

Стоит попробовать:

  • увеличение "таймаута кэша arp" по умолчанию с 60 до 3600 с. Это снизит среднюю скорость запросов ARP с 34 до 0,5 запросов / с.
  • статическое добавление всех интересных MAC-адресов в таблицу arp

Однако лучший вариант - отделить сервер от 2k хостов с помощью маршрутизатора.

  • Если вы можете изменить IP-адрес своего сервера, просто поместите его в другую подсеть
  • Если вы не можете изменить IP-адрес, вы можете разделить подсеть / 30 на подсеть / 21 и использовать функцию proxy-arp, чтобы склеить их.