Solana Geyser gRPC - Тест задержки gRPC

Это руководство покажет, как протестировать latency сервера Solana Geyser gRPC.

Prerequisites

Установите SLV CLI:
bash
curl -fsSL https://storage.slv.dev/slv/install | sh

Test gRPC Latency

Вы можете легко проверить latency сервера Solana Geyser gRPC с помощью следующей команды:
bash
slv check grpc --help
Usage:   slv check grpc
Version: 0.8.2

Description:

  Check gRPC endpoint

Options:

  -h, --help              - Show this help.
  --endpoint  <endpoint>  - gRPC endpoint URL
  --token     <token>     - Token for authentication
Если у вас нет доступа к Geyser gRPC, обратитесь к руководству Geyser gRPC Quickstart.

Run the latency check

Чтобы протестировать shared endpoint напрямую, выполните следующую команду, подставив свой endpoint:
bash
slv check grpc --endpoint <YOUR_ENDPOINT> --token none
Пример:
bash
  ~ slv check grpc --endpoint http://grpc-ams1.erpc.global --token none
Checking gRPC endpoint: http://grpc-ams1.erpc.global
Current latency: 540 ms, slots: 0
Avg latency: 540 ms
Current latency: 962 ms, slots: 1
Avg latency: 751 ms
Current latency: 394 ms, slots: -1
Avg latency: 632 ms
Current latency: 776 ms, slots: 0
Avg latency: 668 ms
Current latency: 1157 ms, slots: 1
Avg latency: 765.8 ms
Current latency: 529 ms, slots: 0
Avg latency: 726.3333333333334 ms
Current latency: 891 ms, slots: 1
Avg latency: 749.8571428571429 ms
Current latency: 249 ms, slots: -1
Avg latency: 687.25 ms
Вы можете остановить тест, нажав Ctrl + C.

Reference: Understanding gRPC Latency

При измерении gRPC latency вы можете увидеть значения больше одной секунды. Сначала это может показаться "медленным", но помните, что время block time в Solana фиксируется только с точностью до секунды - миллисекунды отбрасываются.

Connecting in the Same Region

Сначала убедитесь, что ваш server находится в том же регионе, что и gRPC endpoint. Например, если вы подключаетесь к grpc-ams1.erpc.global, ваш server тоже должен находиться в Amsterdam, чтобы минимизировать network latency.

Why You Might See “Over 1 Second” Latency

Представьте transaction, которая фактически произошла в 07:46:46.900, но Solana записала ее как 07:46:46.000. Если вы получили ее в 07:46:47.200, то простое вычисление даст:
text
(Receive Time) - (Block Time)
= 07:46:47.200 - 07:46:46.000
= 1.2 seconds
На первый взгляд это выглядит как 1.2 секунды latency. Однако поскольку transaction на самом деле произошла в 07:46:46.900, фактическая latency составляет всего около 300ms: 07:46:47.200 - 07:46:46.900 = 0.3 seconds.

Subtracting 500ms as an Approximation

Поскольку Solana округляет время вниз до ближайшей секунды, мы не знаем точно, в какой момент внутри этой секунды произошла transaction. Разумное приближение
  • предположить середину секунды (500ms), тогда формула будет такой:
text
(Receive Time) - (Block Time + 0.5 seconds)
Хотя это и не идеально точно, такой подход помогает компенсировать отсутствие данных о миллисекундах и получить более близкую оценку фактической gRPC latency.
Учитывая эти моменты, вы сможете точнее оценивать latency Solana Geyser gRPC. Запись времени в Solana с точностью до секунды требует учитывать возможные погрешности округления, а также правильно подбирать размещение server и endpoint, чтобы отражать реальную производительность.