Производительность Solana gRPC: методология публичного бенчмарка

Источник: Alchemy•

Производительность Solana gRPC: методология публичного бенчмарка

Как мы измеряем задержку доставки Solana gRPC в шести регионах, включая результаты p50, p90 и p99, полную конфигурацию тестирования и точные команды для их воспроизведения.

Показатели производительности Solana ценны ровно настолько, насколько надежен метод их получения. Цифру задержки без указания региона, временного окна и схемы тестирования нельзя проверить, сравнить или воспроизвести.

В этой статье описывается то, как мы измеряем наши потоки Solana gRPC, публикуются полученные в ходе измерений цифры, а также приводится полная конфигурация для воспроизведения теста на любой конечной точке, включая нашу.

Зачем вообще публиковать методологию?

Одиночный показатель задержки ничего не говорит о том, где выполнялся тест, на что была оформлена подписка, с каким уровнем подтверждения и в течение какого временного окна. В сети Solana именно эти детали определяют итоговое число: блоки прибывают менее чем за секунду, а разница между потоковыми эндпоинтами составляет всего несколько миллисекунд. Мы уже публикуем правила измерений для наших бенчмарков запросов; эта статья делает то же самое для потоковой передачи Solana.

Любой желающий может проверить бенчмарк запросов, отправив аналогичный запрос. Поток проверять сложнее. Вы не можете воспроизвести момент активности в блокчейне, чтобы убедиться, доставил ли ваш провайдер данные быстро, полностью и в нужном порядке. Опубликованный метод позволяет разработчикам запускать тест для своей собственной рабочей нагрузки, а не полагаться на чужие слова.

Что измеряет бенчмарк?

Производительность потоковой передачи охватывает три разные задачи: когда данные прибывают, прибывают ли они полностью и что происходит при обрыве соединения. Данный бенчмарк отвечает на первую из них в разрезе регионов.

  • Сетевое круговое время (p50). Медианное время установки TCP-соединения от тестера до эндпоинта по 30 соединениям. Оно в основном определяется географией, поэтому показывает издержки вашего расположения до того, как начнут перемещаться какие-либо данные.
  • Разброс доставки (p90, p99). На сколько миллисекунд позже самой быстрой доставки в сеансе прибывает медленное или худшее по худшему сценарию сообщение. Хвост распределения — это то, что ощущает ваша система в самый неподходящий момент. Монитору ликвидаций все равно, что типичное обновление было быстрым, если то единственное, которое имело значение, опоздало.

Мы публикуем оба показателя по каждому региону в отдельности, никогда не сводя их к единому глобальному среднему.

Как измерить задержку потока без доверия к часам?

Измерить запрос просто. Одна машина отправляет его и получает ответ, поэтому одни часы охватывают весь цикл туда и обратно.

Поток разрушает это удобство. Событие зарождается на валидаторе, проходит через инфраструктуру провайдера и попадает в ваш процесс-подписчик на другой машине в другом дата-центре. Теперь в процесс вовлечены двое часов, и часы на разных машинах могут расходиться на несколько миллисекунд, даже если на обеих запущен NTP. Погрешность доставки между хорошо настроенными эндпоинтами может быть еще меньше, а это значит, что наивная математика с использованием меток времени в итоге может измерять ошибку часов, а не производительность.

Наш эндпоинт помечает каждое сообщение временем его создания, а тестер вычитает эту метку из времени прибытия сообщения. Такое вычитание сравнивает двое часов, поэтому тестер сверяет собственные часы с сервером точного времени до и после каждого запуска. Небольшая фиксированная погрешность все же может остаться. Представление каждого сообщения относительно самой быстрой доставки в сеансе устраняет ее, поскольку фиксированная ошибка часов сдвигает каждое сообщение на одну и ту же величину и взаимно уничтожается при вычитании. Колонка кругового времени (round-trip) не нуждается в коррекции, так как тестер измеряет каждое TCP-соединение по собственным часам.

Эти цифры не показывают общее время от валидатора до вашего процесса и не ранжируют провайдеров. Ранжирование требует другого теста — сравнения двух потоков с одной и той же машины, о чем рассказывается в разделе воспроизведения.

Две детали обеспечивают чистоту измерений. Уровень подтверждения зафиксирован на значении processed (обработано) — это самый ранний уровень подтверждения, поскольку смешение уровней подтверждения означает измерение разных этапов жизненного цикла события. Кроме того, собственные метки времени блоков блокчейна полностью исключены из расчетов. Solana производит блоки менее чем за секунду, в то время как метки времени блоков имеют точность только до секунды, поэтому они слишком грубы для оценки миллисекундных интервалов.

Как выглядит тестовый запуск?

Каждый показатель в этой статье получен в результате запуска со следующей конфигурацией. При изменении параметров мы перепубликовываем данные под новой датой, а не редактируем их в исходном виде.

  • Тестируемый поток: один поток транзакций gRPC, совместимый с Yellowstone, на один запуск.
  • Отслеживаемый аккаунт: PumpSwap, AMM-программа Pump (pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA), выбранная из-за высокого объема транзакций.
  • Уровень подтверждения: processed для каждого запуска.
  • Размер выборки: 20 000 транзакций на регион.
  • Точки обзора: тестеры на машинах Fly в шести клиентских регионах: Восток США, Запад США, Запад ЕС, Центральная ЕС, Сингапур и Токио. Время кругового пути каждого тестера до эндпоинта является частью его результатов, поскольку бенчмарк, запущенный из кофейни, измеряет эту кофейню.
  • Клиент: пример задержки на Rust в geyserbench с настройками клиента по умолчанию поверх TLS, показанный в разделе воспроизведения ниже.
  • Временное окно: с 14 по 16 октября 2026 года. Каждая опубликованная таблица содержит даты запуска, в ходе которого она была получена.

Каковы результаты?

Поведение доставки нашего потока Solana gRPC, измеренное клиентом в каждом регионе. Каждая строка представляет собой 20 000 транзакций в одном потоке с уровнем подтверждения processed, выполненных с 14 по 16 октября 2026 года:

Регион

p50

p90

p99

Восток США

1.8 мс

+13.1 мс

+17.4 мс

Запад США

15.6 мс

+7.2 мс

+12.2 мс

Запад ЕС

21.9 мс

+3.5 мс

+14.3 мс

Центральная ЕС

5.2 мс

+2.4 мс

+6.8 мс

Азиатско-Тихоокеанский регион, Сингапур

4.3 мс

+8.5 мс

+11.7 мс

Азиатско-Тихоокеанский регион, Токио

3.3 мс

+9.2 мс

+23.6 мс

Столбец p50 представляет собой медианное сетевое круговое время от тестера до эндпоинта. Столбцы p90 и p99 показывают, на сколько миллисекунд позже самой быстрой доставки в этом сеансе прибывает медленное сообщение или сообщение для худшего сценария.

Воспринимайте p50 как плату за расстояние вашего местоположения, а p90 и p99 — как показатель стабильности доставки. Ни то, ни другое не является общей сквозной задержкой от валидатора. Правильный способ оценить собственные ожидания — посмотреть на строку для вашего региона: разработчикам из Франкфурта следует ориентироваться на строку Центральной ЕС, а не на глобальное среднее значение, смещенное в сторону региона с наилучшими результатами теста. Когда мы запустили Solana gRPC, мы опубликовали раннюю версию этого утверждения (доставка в среднем на 5–15 мс быстрее альтернатив, измерено из us-east-1). Эта таблица является мультирегиональным преемником того однорегионального снимка «голова к голове» с другой и дополняющей ее метрикой.

Как это воспроизвести?

Вам понадобятся Rust и ключ API Alchemy с доступом к Solana gRPC (в руководстве по быстрому старту перечислены предварительные требования). Три команды:

bash

Скопировано

git clone https://github.com/clinder777/geyserbench && cd geyserbench && git checkout 463cf8e0b70d5b84defb8092e17486eab13960ad export ALCHEMY_API_KEY=your-alchemy-api-key cargo run --release --example latency

Команда открывает один поток Solana gRPC, отслеживает 20 000 транзакций на активном аккаунте с уровнем подтверждения processed и выводит медианное сетевое круговое время до эндпоинта, а также то, на сколько миллисекунд выше самой быстрой доставки прибывают ваши сообщения p50, p90 и p99. Запустите его на сервере в интересующем вас регионе и сравните с таблицей выше.

Мы использовали pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA, PumpSwap, программу AMM от Pump. Это хороший выбор, поскольку у неё очень большой объём, поэтому 20 000 транзакций поступают быстро. Чтобы отслеживать другую программу или выполнить более короткий тест, установите для переменной ACCOUNT адрес программы, а для N — количество транзакций:

bash

Copied

ACCOUNT=pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA N=5000 cargo run --release --example latency

Чтобы сравнить двух провайдеров, а не измерять только одного, запустите оба потока с одной машины и запишите, какой из них доставляет каждую транзакцию первым. Публичный geyserbench делает это из единого файла конфигурации, в котором указаны оба эндпоинта, и сообщает, как часто каждый из них первым обнаруживает транзакцию.

Если вы запустите этот тест и получите существенно отличающиеся от наших цифры, сообщите нам. Именно для этого методология и находится в открытом доступе.

Чего этот бенчмарк не измеряет?

Три вещи намеренно вынесены за рамки этого бенчмарка:

  • Надежность потока. Это бенчмарк задержки. Он не измеряет пропущенные события, отключения, время переподключения или заполнение пробелов после переподключения, поэтому он ничего не говорит в пользу или против этих аспектов. Если ваше приложение зависит от доставки без пропусков, протестируйте это напрямую. Наши эндпоинты хранят историю за 48 часов (более 400 000 слотов), с которой переподключающийся клиент может начать воспроизведение с помощью from_slot.
  • Добавление транзакций в блок. Включение транзакции в блок — это задача пути записи со своей собственной инфраструктурой и своими собственными режимами сбоев. Ничто здесь об этом не говорит.
  • Чтение запросов/ответов. Опрос метода JSON-RPC — это другой паттерн доступа с другими режимами сбоев, и наш публичный бенчмарк RPC охватывает трафик запросов отдельно с помощью собственных опубликованных правил.

Часто задаваемые вопросы

Насколько быстр Solana gRPC от Alchemy?

Это зависит от того, откуда вы проводите измерения, именно поэтому Alchemy публикует распределение задержек по регионам, а не единый глобальный показатель. В таблице регионов выше указаны круговое время сети (RTT), а также разброс доставки для p90 и p99, полученные с использованием опубликованной методологии в указанную дату. Круговое время сети до эндпоинта составляет от 1,8 мс в США (Восток) до 21,9 мс в ЕС (Запад), а сообщения p99 прибывают в течение 6,8–23,6 мс после самой быстрой доставки, в зависимости от региона.

Как измеряется задержка Solana gRPC?

Клиент в каждом регионе открывает один gRPC-поток с уровнем коммита processed, отслеживает 20 000 транзакций в высокообъемной программе и сравнивает время прибытия каждого сообщения со временем его создания нашим эндпоинтом. Результаты сообщаются по каждому региону в виде задержек p90 и p99 сверх самой быстрой доставки в прогоне, наряду с медианным круговым временем сети от клиента до эндпоинта.

Могу ли я воспроизвести бенчмарки Solana gRPC от Alchemy?

Да. Тест запускается из примера latency в geyserbench, а точные команды опубликованы в этом посте. Запустите его на сервере в вашем целевом регионе с уровнем коммита processed и сравните свои перцентили с таблицей регионов. Чтобы сравнить двух провайдеров, geyserbench также может запускать оба эндпоинта параллельно с одной и той же машины.

Какой уровень коммита используют бенчмарки?

Каждый прогон подписывается на processed — самый ранний уровень коммита Solana. Смешивание уровней коммита привело бы к измерению событий в разных точках их жизненного цикла, что делает перцентили бессмысленными. Ваше производственное приложение может предпочитать confirmed или finalized; методология сохраняет уровень коммита постоянным, чтобы показатели оставались сопоставимыми между регионами и прогонами.

Является ли это сравнением с другими провайдерами?

Нет. В этом посте описывается, как Alchemy измеряет и публикует собственную производительность Solana gRPC. Другие провайдеры публикуют собственные бенчмарки, и увеличение количества опубликованных методологий в этой категории идет на пользу всем. Раздел воспроизведения создан для того, чтобы вы могли самостоятельно запустить сравнение, которое важно для вас, на вашей рабочей нагрузке.

Начните потоковую передачу данных Solana

Наша потоковая передача Solana gRPC совместима с Yellowstone, поэтому перенаправление существующего клиента на неё сводится к изменению URL-адреса, а не к переписыванию кода. Стоимость составляет 75 долларов США за ТБ без ежемесячного минимума, а в документации по Yellowstone gRPC описан быстрый старт. Команды, создающие продукты на Solana, также могут подать заявку на получение кредитов на сумму до 25 тыс. долларов США в рамках фонда Solana Fund на 20 млн долларов США. Можете сначала запустить бенчмарк, если хотите. Для этого он и предназначен.

О чём эта статья

Ещё в разделе «Web3 и блокчейн»

Все →

Ещё от Alchemy