✅ Лучшие практики

Следуйте этим рекомендациям для максимально надёжной и быстрой доставки shreds от ShredStream.com.

Используете наш SDK? SDK автоматически настраивает буфер приёма сокета (по умолчанию 25 МБ) и выполняет валидацию пакетов. Вам по-прежнему нужно настроить параметры sysctl на уровне ОС, а также полезно ознакомиться с рекомендациями по мониторингу и резервированию.


📐 Размер UDP-буфера

Самое значимое изменение конфигурации -- увеличение буфера приёма UDP. ShredStream.com может доставлять тысячи shreds в секунду, и буфер ОС по умолчанию для этого слишком мал.

Установите минимум 25 МБ:

bash
# Apply immediately (Linux)
sudo sysctl -w net.core.rmem_max=26214400
sudo sysctl -w net.core.rmem_default=26214400
# Persist across reboots — add to /etc/sysctl.conf
net.core.rmem_max=26214400
net.core.rmem_default=26214400

Затем запросите размер буфера в коде приложения:

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 25 * 1024 * 1024)
sock.bind(("0.0.0.0", 8001))

Примечание о удвоении буфера в Linux: Linux внутренне удваивает значение буфера, переданное в setsockopt(). Когда вы запрашиваете 25 МБ, ядро выделяет 50 МБ (половина для данных, половина для внутренних нужд ядра). Параметр rmem_max в sysctl должен быть не менее 25 МБ, чтобы запрос прошёл успешно.


🔄 Резервирование и отказоустойчивость

Для продакшн-систем, где критична бесперебойная работа, продумайте резервирование.

  • Мультирегиональные стримы -- Создайте стримы в двух и более регионах. Если один регион столкнётся с проблемой, другой продолжит доставку. Дедуплицируйте входящие shreds по паре (slot, index), чтобы не обрабатывать одни и те же данные дважды.
  • Горячий резерв -- Запустите второй приёмник на другой машине. Оба могут слушать одновременно; ваш конвейер обработки дедуплицирует данные далее по цепочке.
  • Переключение IP -- Используйте плавающий IP или Elastic IP, который можно быстро переназначить. Обновите адрес назначения стрима в панели управления при переключении трафика на резервный сервер.

✅ Итоговый чек-лист

  • Буфер приёма UDP установлен на 25 МБ или более
  • Сокет привязан к 0.0.0.0, а не к 127.0.0.1
  • Поток приёма изолирован от логики обработки
  • Резервные стримы в нескольких регионах (для продакшн-нагрузок)
Лучшие практики — Documentations | ShredStream.com