Solana Geyser gRPC - gRPC 延迟测试

本指南将向您展示如何测试 Solana Geyser gRPC 服务器的延迟。

前提条件

安装 SLV CLI:
bash
curl -fsSL https://storage.slv.dev/slv/install | sh

测试 gRPC 延迟

您可以使用以下命令轻松测试 Solana Geyser gRPC 服务器的延迟:
bash
slv check grpc --help
Usage:   slv check grpc
Version: 0.9.0

Description:

  Check gRPC endpoint

Options:

  -h, --help              - Show this help.
  --endpoint  <endpoint>  - gRPC endpoint URL
  --token     <token>     - Token for authentication
如果您没有 Geyser gRPC 访问权限,请参阅 Geyser gRPC 快速入门指南。

运行延迟检查

共享 gRPC 端点不再需要 x-token。传入 --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
测试将继续检查 Geyser gRPC 服务器的延迟。
您可以按 Ctrl + C 停止测试。

参考:理解 gRPC 延迟

在测量 gRPC 延迟时,您可能会看到超过一秒的值。起初这可能感觉"很慢",但请记住 Solana 的出块时间仅记录到秒级——毫秒被截断。

在同一区域连接

首先,确保您的服务器与 gRPC 端点位于同一区域。例如,如果您连接到 grpc-ams1.erpc.global,您应该将服务器也放在阿姆斯特丹以最小化网络延迟。

为什么您可能会看到"超过 1 秒"的延迟

考虑一笔实际发生在 07:46:46.900 的交易,但 Solana 将其记录为 07:46:46.000。如果您在 07:46:47.200 收到它,直接计算得出:
text
(接收时间)-(区块时间)
= 07:46:47.200 - 07:46:46.000
= 1.2 秒
乍一看这似乎有 1.2 秒的延迟。然而,由于交易实际发生在 07:46:46.900,实际延迟仅约 300ms: 07:46:47.200 - 07:46:46.900 = 0.3 秒。

减去 500ms 作为近似值

由于 Solana 向下取整到最近的秒,我们不知道交易确切发生在该秒的哪个位置。一个合理的近似是假设中点(500ms),因此公式变为:
text
(接收时间)-(区块时间 + 0.5 秒)
虽然不完全精确,但这有助于抵消缺失的毫秒数据,提供更接近实际 gRPC 延迟的估计。
牢记这些注意事项,您可以更准确地评估 Solana Geyser gRPC 延迟。Solana 秒级时间记录需要考虑潜在的四舍五入差异,同时确保服务器和端点的正确部署以反映真实性能。