✅ Лучшие практики
Следуйте этим рекомендациям для максимально надёжной и быстрой доставки shreds от ShredStream.com.
Используете наш SDK? SDK автоматически настраивает буфер приёма сокета (по умолчанию 25 МБ) и выполняет валидацию пакетов. Вам по-прежнему нужно настроить параметры sysctl на уровне ОС, а также полезно ознакомиться с рекомендациями по мониторингу и резервированию.
📐 Размер UDP-буфера
Самое значимое изменение конфигурации -- увеличение буфера приёма UDP. ShredStream.com может доставлять тысячи shreds в секунду, и буфер ОС по умолчанию для этого слишком мал.
Установите минимум 25 МБ:
# Apply immediately (Linux)sudo sysctl -w net.core.rmem_max=26214400sudo sysctl -w net.core.rmem_default=26214400# Persist across reboots — add to /etc/sysctl.confnet.core.rmem_max=26214400net.core.rmem_default=26214400
Затем запросите размер буфера в коде приложения:
import socketsock = 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 - Поток приёма изолирован от логики обработки
- Резервные стримы в нескольких регионах (для продакшн-нагрузок)