Solana性能采样如何估算TPS? 图 1
Solana性能采样如何估算TPS? · 图 1

getRecentPerformanceSamples同时给出总交易数和非投票交易数。两者除以samplePeriodSecs得到不同TPS,报表若只写一个“TPS”就会混淆共识投票与用户交易。

本文用实际数字演示两种公式,并说明滚动样本不能代表未来容量。

事实与证据边界

核验项可确认结论
响应字段getRecentPerformanceSamples返回近期样本的slot、numSlots、numTransactions、numNonVoteTransactions与samplePeriodSecs。
两种TPS公式总TPS可用numTransactions除以samplePeriodSecs估算,非投票交易吞吐应使用numNonVoteTransactions,二者口径不能混用。
滚动窗口样本是所查询节点保存的有限滚动历史,不是未来容量或SLA;跨时间比较应固定端点并保留每个原始样本。

从输入到验收

阶段动作
准备固定RPC端点和请求limit,保存全部样本字段
读取逐条计算总TPS和非投票TPS,不混用分子
解释按samplePeriodSecs做加权汇总
复核剔除样本前先记录剔除原因和原值
收尾报表附端点、查询时间、窗口数与覆盖秒数

用一条样本算两种TPS

假设响应为numSlots=150numTransactions=120000numNonVoteTransactions=48000samplePeriodSecs=60

  • 总TPS:120000 ÷ 60 = 2000
  • 非投票TPS:48000 ÷ 60 = 800
  • 样本内平均每slot总交易:120000 ÷ 150 = 800
指标分子适合回答
总TPSnumTransactions节点观察到的全部交易处理量
非投票TPSnumNonVoteTransactions更接近非投票业务活动
slot速度numSlots / samplePeriodSecs该窗口完成slot的节奏

跨日比较要保存每条原始样本,而不是先把多个窗口相加再除一个不匹配的秒数。异常短窗口、节点重启和缺失样本应单独标记。

故障与停止条件

误判正确处置
用numTransactions直接当TPS保留原始证据,停止外推并按本文步骤复核
把投票交易也写成用户交易吞吐保留原始证据,停止外推并按本文步骤复核
拿一个近期窗口承诺主网未来容量或SLA保留原始证据,停止外推并按本文步骤复核

四问复评滚动窗口

输入是否能被别人重放?

用已知对象执行“固定RPC端点和请求limit,保存全部样本字段”,保存所有必需字段,而不是截图。第二个人根据响应字段重建同一请求或字节,再做“逐条计算总TPS和非投票TPS,不混用分子”。如果缺少网络、版本、区块、账户或时间上下文,即使数值相同也不能算复现。

错误是否真的被拦住?

先只注入“用numTransactions直接当TPS”,记录预期错误与实际返回;恢复成功样本后,再单独注入“把投票交易也写成用户交易吞吐”。错误处理不得使用旧缓存冒充新结果,也不能把null、未知类型或权限失败自动改成零值。每个反例只变一个条件,才能定位校验是否生效。

状态变化后旧结论会不会残留?

围绕指标边界制造一次可控变化,并在变化前后分别执行“按samplePeriodSecs做加权汇总”。页面同时展示两份证据的对象、上下文和时间;新状态不能覆盖审计历史,旧状态也不能继续显示为当前完成。

什么时候停止自动流程?

一旦出现“拿一个近期窗口承诺主网未来容量或SLA”,状态转为待核验,并要求人工执行“剔除样本前先记录剔除原因和原值”。交接时把响应字段原文、两种TPS公式推导和滚动窗口验收分栏保存,使复核者能判断问题来自规范理解、现场环境还是展示逻辑。

来源、增量与风险边界

来源本文用途
Solana RPC正式接口、字段与规范语义
Solana RPC Overview实现路径、兼容性或安全边界

本文资料读取于2026-07-20。节点版本、异常slot和样本窗口会影响均值,报表不能只保存一个聚合TPS数字。

站内相邻主题可继续阅读:slot与epoch单位Solana RPC核验。性能样本是节点保存的滚动历史,不代表未来吞吐、收益或服务承诺。异常窗口应披露而不是静默删除。