Skip to main content
重要免责声明:仅限生产数据中心这些延迟测试仅为生产数据中心环境设计。不要在本地机器或消费者互联网连接上运行这些测试。本地带宽无法处理大量 Solana 订阅,将产生不反映真实性能的无意义结果。
同地部署要求:在您的 LaserStream 端点附近部署为了获得有意义的延迟测量,您必须将测试基础设施与所选的 LaserStream 端点部署在同一区域。网络距离将主导您的测量结果——从不同大陆进行测试将显示网络延迟,而不是 LaserStream 的性能。

理解分布式区块链系统中的延迟

在使用区块链流服务时,延迟测量变得复杂,因为分布式系统没有统一的时钟。与传统系统中可以测量到单个服务器的往返时间不同,区块链网络涉及多个验证者,每个验证者在不同时间接收和处理相同的交易。 基本挑战: 像 Solana 这样的区块链没有绝对时间的概念。每个全球的验证节点将在不同时间接收相同的交易,确认取决于集群中达到共识的百分比。这使得传统意义上的确定性延迟测量变得不可能。

承诺级别和延迟优先级

Solana 提供三个承诺级别,每个级别具有不同的延迟特性:
  • Processed: 最快,单个验证者确认(约400毫秒)
  • Confirmed: 中等,超多数确认(约2-3秒)
  • Finalized: 最慢,完整网络最终确认(约15-30秒)
对于对延迟敏感的应用程序,processed commitment 通常是目标。本指南中的所有测试都使用 processed commitment 级别,因为大多数高频使用场景优先考虑速度而非绝对最终性。

测量延迟的三种方法

1. 比较并行 gRPC 流

最可靠的方法 - 比较两个独立流到同一数据源,测量哪个流首先接收到相同的事件。 优点:
  • 消除时钟同步问题
  • 提供相对性能比较
  • 对于比较服务最准确

2. 本地时间戳与 created_at 比较

中等可靠性 - 测量系统接收到消息的时间与 LaserStream 服务在消息中嵌入的时间戳之间的差异。 限制:
  • 仅代表 LaserStream 内部创建消息的时间
  • 不会捕获到 LaserStream 的上游延迟
  • 对于真正的端到端延迟,准确性不如方法 1

3. 区块时间戳分析(不推荐)

不推荐 - 将本地接收时间与 Solana 的区块时间戳进行比较。 显著限制:
  • 区块时间戳只有秒级粒度
  • Solana 每 400ms 生成一个区块
  • 提供的有用信息极少

设置要求

区域共址

为了获得有意义的延迟测量,将测试基础设施部署在与 LaserStream 端点相同的数据中心或区域。 可用的LaserStream区域:
  • ewr:纽约,美国(东海岸) - https://laserstream-mainnet-ewr.helius-rpc.com
  • pitt:匹兹堡,美国(中部) - https://laserstream-mainnet-pitt.helius-rpc.com
  • slc:盐湖城,美国(西海岸) - https://laserstream-mainnet-slc.helius-rpc.com
  • ams:阿姆斯特丹,欧洲 - https://laserstream-mainnet-ams.helius-rpc.com
  • fra:法兰克福,欧洲 - https://laserstream-mainnet-fra.helius-rpc.com
  • tyo:东京,亚洲 - https://laserstream-mainnet-tyo.helius-rpc.com
  • sgp:新加坡,亚洲 - https://laserstream-mainnet-sgp.helius-rpc.com
对于devnet测试,使用:https://laserstream-devnet-ewr.helius-rpc.com 请参阅 LaserStream gRPC 文档 以获取完整的设置说明和端点选择指南。

Rust 环境设置

所有测量脚本都使用 Rust 和 Cargo。基本设置:
使用您的凭证创建一个.env文件:
Helius Dashboard获取您的Helius API密钥。LaserStream devnet在所有计划中可用。主网访问需要商业或专业计划。

方法 1:并行流比较

此脚本建立与不同gRPC端点的两个独立连接,并测量哪个首先收到相同的BlockMeta消息。这种方法通过使用相对时间来消除时钟同步问题。
测量内容: 两个流服务之间的相对性能差异。增量显示哪个服务首先传递相同的槽信息。 关键指标:
  • 正增量:第一个服务 (YS) 比第二个服务 (LS) 慢 - LaserStream 更快
  • 负增量:第一个服务 (YS) 比第二个服务 (LS) 快 - LaserStream 更慢
  • 平均/中位数:平均性能差异
  • P95:95% 百分位延迟差异
运行测试:
示例输出:
输出显示实时延迟差异和周期性统计数据。正的平均增量表示第二个服务 (LaserStream) 一贯更快地传递数据。

方法 2:创建时间戳分析

此方法将嵌入消息的created_at时间戳与接收时的本地系统时间进行比较。
重要限制: 此方法仅测量从 LaserStream 创建消息到您接收消息的时间。不考虑区块链事件与 LaserStream 处理之间的任何上游延迟。 运行测试:
示例输出:
此方法提供了LaserStream和您的应用程序之间网络和处理延迟的见解,但应与方法1结合使用以进行全面分析。

延迟测试的最佳实践

关键原则

  • 同地部署:在与您的LaserStream端点相同的区域部署测试以最小化网络延迟
  • 多种方法:使用并行流比较(方法1)作为主要指标,并辅以时间戳分析
  • 长期监控:长时间运行测试以捕获不同的网络条件和区块链拥堵
  • 统计分析:关注百分位数(P95, P99)而不仅仅是平均值,以了解尾部延迟

结果解读

  1. 建立基线:至少运行1小时的测试以在正常条件下建立基线性能
  2. 识别模式:寻找延迟峰值的模式——它们是否与高区块链活动或网络拥堵相关?
  3. 比较百分位数:P95延迟通常比平均延迟对用户体验更重要
  4. 监控一致性:一致的性能通常比绝对最小延迟更有价值
请记住,由于网络共识要求,区块链延迟本质上是可变的。关注相对性能差异和一致性,而不是绝对数值。