Как выбрать VPS или Bare Metal для Solana: CPU, UDP и сеть

Почему сервер не менее важен, чем поток Solana
Быстрый поток Solana не гарантирует своевременного получения пригодных для обработки данных. Низкая загрузка CPU и заявленный порт 1 Гбит/с не объясняют все проблемы. Нужно измерить путь от источника до приложения. Здесь используются анонимизированные наблюдения и опубликованные тесты без обвинения провайдера, если причина не установлена.
Высокая скорость означает и большой поток пакетов
Shreds и Yellowstone Geyser gRPC могут передавать данные непрерывно и всплесками. Пропускная способность, пакеты в секунду (PPS), RTT, джиттер, потери и время обработки — разные метрики. Гипотетические 4 МБ/с за 30 дней дают около 10,4 ТБ, но в среднем всего 32 Мбит/с. Это не доказывает нехватку 1 Гбит/с. Необходимо проверить ограничения UDP, всплески, общие каналы и прием.
Поток работает, но фрагментов не хватает
В анонимном расследовании источник регистрировал примерно 3 400–3 900 UDP-пакетов/с, а в другой период приемник сообщил приблизительно 13 пакетов/с. Полученные Shreds были корректными, но данных для реконструкции не хватало. gRPC на той же машине работал. Эти наблюдения относятся к разным временам и точкам и не дают точный процент потерь либо установленную причину. Несколько тысяч PPS сами по себе не являются запредельной нагрузкой.

Сначала найдите точку наблюдения
UDP может ограничиваться сетевой политикой, защитой DDoS или хостом виртуализации до попадания в гостевую ОС. После NIC пакеты могут теряться в ядре, сокете и приложении. Начните с tcpdump, затем проверьте счетчики NIC, ошибки UDP и очереди. XDP способен отбрасывать пакеты до tcpdump. Сопоставляйте одинаковые адреса, порты и интервалы времени.

Один город не означает короткий маршрут
Два сервера во Франкфурте могут использовать разные площадки и внешние сети. С одного удаленного хоста к двум соседним эндпоинтам Амстердама были измерены около 11 и 23 мс RTT, хотя между самими эндпоинтами примерно 0,1 мс. В другой временной интервал на вышестоящем маршруте наблюдали 5–8% потерь и около 5 мс дополнительной задержки. Это отдельные маршруты, не вся отрасль.

Размещайте обработку рядом с источником
Обычно поставщик RPC и аренды серверов — разные компании. ERPC проектирует Shreds, Geyser gRPC, RPC, VPS и Bare Metal совместно. В поддерживаемых локациях источник и приложение могут взаимодействовать по короткой локальной сети между близкими стойками. Zero-Distance Communication не означает физический ноль и не гарантирует заданную задержку. Реальный маршрут необходимо измерять.

Оценивайте данные, дошедшие до приложения
Для сопоставимой подписки Geyser gRPC на один эндпоинт Амстердама внешний хост получал 3,7–4,2 МиБ/с с растущим отставанием. Независимый тест ERPC VPS во Франкфурте с ограничением в одно ядро показал в среднем 9,396 МиБ/с и около 1 910 транзакций/с за 60 секунд без накопления задержки. На проблемном пути были TCP-повторы. Хосты и реализации клиентов различались: это не строгий A/B-тест. В отдельном HTTP/2 тесте окно приема 16 КиБ давало 2,7 МБ/с, большее окно — до 7,1 МБ/с.

Название процессора скрывает ограничения
VM с одинаковым поколением CPU и числом vCPU могут различаться политикой буста, питания, охлаждения и планирования. AMD Core Performance Boost и Intel Turbo Boost могут быть выключены BIOS или хостом. Даже включенный буст не гарантирует устойчивой максимальной частоты. Гость не всегда видит настройки гипервизора. Измеряйте долгосрочную производительность под реальной нагрузкой.

Четыре vCPU: разница 1,93× в тесте
Публичный тест ERPC на системах AMD Turin с четырьмя vCPU и Ubuntu 24.04 в Амстердаме показал 7 850 против 4 062 событий sysbench CPU/с, около 1,93× в этих условиях. Также заявлены примерно 3,2× по пропускной способности памяти и 16,6× по случайному чтению 4К IOPS. Это не универсальное обещание и не доказательство единственного влияния буста.

Экономика дата-центра влияет на производительность
Электричество, охлаждение, стойки, коммутаторы, каналы и поддержка стоят денег. Совместное использование ресурсов разумно для многих обычных приложений. Высоконагруженные потоки Solana могут постоянно занимать CPU, PPS и uplink. Общие каналы, лимиты на поток, защита DDoS и энергосбережение могут быть оправданы для одних задач, но не подходить для других. Проверяйте политику без обвинений.
Учитывайте расходы на облачный трафик
Непрерывные потоки накапливают терабайты. Входящий Интернет у ряда облаков бесплатен, однако исходящий трафик и передача между зонами или сервисами часто тарифицируются. Подходящие продукты ERPC разделяют внутренний трафик платформы и внешние квоты по действующим условиям. Считайте полную стоимость пути данных, а не только аренды VM.
Выбирайте конфигурацию под задачу
Легкому RPC может хватить EPYC VPS; постоянная аналитика gRPC нуждается в запасе CPU и памяти. UDP Shreds и торговым системам нужны правильная политика UDP, PPS, пропуск всплесков и быстрая реакция приложения. Bare Metal предоставляет эксклюзивные физические ресурсы, но не всегда быстрее. Иногда распределение по VPS полезнее. Сравнивайте одинаковые фильтры и интервалы, валидные Shreds, реконструкцию, lag, TCP-повторы и p95/p99 задержки.
Измеряйте до долгосрочной аренды
В Linux используйте tcpdump, nstat, ip -s link, ethtool -S, ss -tin и lscpu для первых проверок без изменения конфигурации. Подставьте реальный интерфейс и IP, сравнивайте прирост счетчиков. lscpu сам по себе не раскрывает политику буста гипервизора. ERPC предлагает почасовую оплату некоторых VPS и Bare Metal при наличии ресурсов. Нужен сервер, который вовремя дает пригодные данные.
bash
IFACE=ens3
SRC_IP=203.0.113.10 # documentation address; replace with real sender IP
PORT=2000
sudo timeout -s INT 10 tcpdump -nni "$IFACE" -l -q \
"udp and src host $SRC_IP and dst port $PORT" 2>/dev/null | wc -l
nstat -az UdpInErrors UdpRcvbufErrors
ip -s link show dev "$IFACE"
sudo ethtool -S "$IFACE" | grep -Ei 'drop|miss|err|fifo'
ss -tin
lscpuIFACE=ens3
SRC_IP=203.0.113.10 # documentation address; replace with real sender IP
PORT=2000
sudo timeout -s INT 10 tcpdump -nni "$IFACE" -l -q \
"udp and src host $SRC_IP and dst port $PORT" 2>/dev/null | wc -l
nstat -az UdpInErrors UdpRcvbufErrors
ip -s link show dev "$IFACE"
sudo ethtool -S "$IFACE" | grep -Ei 'drop|miss|err|fifo'
ss -tin
lscpuТехнические источники
- https://solana.com/news/high-performance-solana-validators-run-on-bare-metal-hardware
- https://docs.kernel.org/networking/statistics.html
- https://man7.org/linux/man-pages/man7/udp.7.html
- https://docs.kernel.org/admin-guide/pm/amd-pstate.html
- https://grpc.io/docs/guides/flow-control/
- https://www.rfc-editor.org/rfc/rfc8085.html
- https://erpc.global/en/vps/
- Validators DAO testing tools


