Solana Geyser gRPC - Тест задержки gRPC
Это руководство покажет, как протестировать latency сервера Solana Geyser
gRPC.
Prerequisites
Установите SLV CLI:
bash
curl -fsSL https://storage.slv.dev/slv/install | shcurl -fsSL https://storage.slv.dev/slv/install | shTest 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 authenticationslv 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 noneslv 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➜ ~ 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(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)(Receive Time) - (Block Time + 0.5 seconds)Хотя это и не идеально точно, такой подход помогает компенсировать отсутствие
данных о миллисекундах и получить более близкую оценку фактической gRPC
latency.
Учитывая эти моменты, вы сможете точнее оценивать latency Solana Geyser gRPC.
Запись времени в Solana с точностью до секунды требует учитывать возможные
погрешности округления, а также правильно подбирать размещение server и
endpoint, чтобы отражать реальную производительность.