摘要
最快的Polygon RPC是能让你的特定工作负载保持响应的那个:到用户的低往返延迟、足够的吞吐量应对你的请求组合,以及在突发情况下的可预测行为。原始基准测试数字不如端点在高负载期间如何处理你对eth_call、eth_getLogs和eth_sendRawTransaction的调用重要。
本页解释了真正驱动Polygon RPC速度的因素,如何根据你自己的流量进行测量,以及何时共享端点足够,而何时专用Polygon节点能给你更一致的余量。它还涵盖了链设置、故障转移,以及在你做出承诺之前需要权衡的取舍。
对于Polygon RPC端点,“最快”实际上意味着什么
当开发者搜索最快的Polygon RPC时,他们通常想要三件事之一:面向用户dApp的最低延迟、后端索引器或机器人的最大吞吐量,或在流量高峰期间最一致的行为。这些是不同的问题,单一的基准测试数字很少能同时回答所有三个问题。
Polygon PoS快速产生区块,因此落后于链头的端点会让你的应用感觉缓慢,即使网络往返时间很短。因此,速度是以下因素的组合:
- 你的客户端和RPC节点之间的网络距离。
- 节点健康——节点是否同步到链头且未饱和。
- 请求成本——像在大区块范围上的
eth_getLogs这样的重调用比简单的eth_blockNumber花费的时间长得多。 - 并发处理——当许多请求同时到达时端点的行为。
对于每隔几秒轮询一次余额的钱包来说,公共端点可能完全够快。对于每分钟发出数千个eth_call请求的服务来说,同一个端点可能是错误的选择。
快速建议:将端点与工作负载匹配
在比较提供商之前,确定哪种配置适合你的应用。此表将常见的Polygon工作负载映射到通常最适合它们的端点类型。
| 工作负载 | 典型调用模式 | 通常适合的端点 |
|---|---|---|
| 钱包或简单dApp | 余额读取,偶尔发送 | 共享/公共RPC通常足够 |
| 交易机器人或清算守护者 | 频繁的eth_call,快速的eth_sendRawTransaction | 低延迟共享或专用RPC |
| 索引器或分析后端 | 宽泛的eth_getLogs,归档读取 | 具有归档访问权限的专用节点 |
| NFT铸造或高流量发布 | 突发发送和读取 | 具有突发余量的专用节点 |
| 桥或预言机 | 持续读取加事件监视 | 具有WebSocket订阅的专用节点 |
如果你不确定,从共享端点开始,测量你的实际延迟和错误率,只有当你能指出特定瓶颈时才迁移到专用Polygon节点。OnFinality为Polygon提供共享RPC API访问和专用节点基础设施,因此你可以按照测量方式扩展。
Polygon链设置一览
如果你要将Polygon添加到钱包或客户端库,这些是你需要的值。它们与OnFinality Polygon网络配置匹配。
| 设置 | 值 |
|---|---|
| 网络名称 | Polygon Mainnet |
| 链ID | 137 |
| 原生货币 | POL(18位小数) |
| 区块浏览器 | https://polygonscan.com |
| 公共RPC URL | https://polygon.api.onfinality.io/public |
| 传输 | HTTP和WebSocket |
对于测试网工作,Polygon Amoy使用链ID 80002,浏览器位于https://amoy.polygonscan.com。你可以在[Polygon网络页面](/networks/polygon)上找到主网和测试网的详细信息。
如何根据你自己的流量测量延迟
提供商基准测试作为起点很有用,但唯一重要的数字是你的用户从你的基础设施体验到的延迟。直接测量它。
一个简单的探测是重复计时一个轻量级调用并记录分布,而不仅仅是平均值。尾部比均值更重要:在高峰时段飙升的p95对交易UI的伤害远大于略高的中位数。
# 对轻量级调用计时20次并查看分布
for i in $(seq 1 20); do
curl -s -o /dev/null -w "%{time_total}\n" \
-X POST https://polygon.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
done
从你的后端或用户实际所在的区域运行相同的探测。从一个大陆快速的节点从另一个大陆可能较慢,一旦请求到达RPC节点本身,CDN风格的边缘路由就无济于事。
对于更现实的测试,重放你的生产调用的样本——包括重调用——并测量延迟和错误率。一个返回快速但偶尔丢弃eth_getLogs请求的提供商在实践中并不更快。
读取JSON-RPC响应并确认你在正确的链上
在信任任何端点之前,确认它正在服务Polygon主网并且已同步。快速的eth_chainId检查可以及早发现配置错误的端点。
// viem示例:验证链并读取最新区块
import { createPublicClient, http } from 'viem';
import { polygon } from 'viem/chains';
const client = createPublicClient({
chain: polygon,
transport: http('https://polygon.api.onfinality.io/public'),
});
const chainId = await client.getChainId(); // 应该是137
const block = await client.getBlockNumber();
console.log({ chainId, block });
如果eth_chainId返回的不是137,则你指向了错误的网络。如果eth_blockNumber远远落后于公共浏览器上的最新区块,则节点滞后,你的读取将过时。
延迟通常来自哪里
当Polygon RPC感觉缓慢时,原因通常是以下之一,按频率大致排序:
- 重查询。 在大区块范围上的
eth_getLogs是最常见的罪魁祸首。缩小范围或使用有效支持归档查询的提供商。 - 地理距离。 你的客户端和节点相距很远,为每次调用增加了往返时间。
- 共享端点上的速率限制。 公共和共享层级可能会限制突发,这表现为错误或排队而不是原始缓慢。
- 节点饱和。 来自许多租户的重负载下的节点即使对简单调用也响应更慢。
- 客户端问题。 缺少连接池、没有重试或同步请求模式会让快速端点感觉缓慢。
诊断哪一个适用于你是真正修复的最快路径。用计时和错误标签检测你的调用,然后查看最慢和最频繁的失败。
共享端点还是专用节点?
这是Polygon RPC的核心构建与购买决策。两种选择都不是普遍更好;它们适合应用的不同阶段。
| 考虑因素 | 共享RPC | 专用节点 |
|---|---|---|
| 设置工作 | 连接即可 | 为你配置 |
| 成本概况 | 较低的入门成本 | 较高,与容量相关 |
| 噪声邻居风险 | 存在 | 隔离到你的工作负载 |
| 突发处理 | 取决于层级 | 根据你的峰值调整大小 |
| 归档/跟踪需求 | 因提供商而异 | 可配置 |
| 最适合 | 早期应用,轻流量 | 具有稳定或尖峰负载的生产应用 |
一个合理的路径是从共享端点开始,观察你的p95延迟和错误率,并在共享层级成为瓶颈时将特定工作负载——索引器、守护者、高流量前端——迁移到专用基础设施。OnFinality的RPC API服务和专用节点旨在让你进行这种迁移,而无需更改应用程序代码,只需更改端点URL。
添加故障转移而不加倍工作
即使快速端点也可能有糟糕的一分钟。单一提供商是单一故障点,因此生产应用通常配置主端点和备用端点。
使用viem,你可以组合传输,使客户端自动回退:
import { createPublicClient, http, fallback } from 'viem';
import { polygon } from 'viem/chains';
const client = createPublicClient({
chain: polygon,
transport: fallback([
http('https://polygon.api.onfinality.io/public'),
http('https://your-secondary-polygon-endpoint'),
]),
});
记住两件事。首先,故障转移保护可用性,而不是延迟——慢速主端点仍然会在回退启动之前增加延迟,因此调整你的超时。其次,如果你使用WebSocket订阅,确保你的回退也支持它们,否则你的事件监听器将静默停止。
值得警报的监控信号
一旦你在生产中有了端点,一小组信号告诉你它是否仍然足够快:
- 区块高度滞后——你的节点头部和网络头部之间的差距。
- 每个方法的p50和p95延迟,而不仅仅是总体。
- 按方法的错误率,特别是对于
eth_getLogs和发送。 - 重组或丢弃订阅事件对于WebSocket客户端。
- 速率限制响应如果你在共享层级。
对趋势警报,而不是单个尖峰。繁忙区块期间的短暂延迟上升是正常的;p95的持续上升通常意味着你已经超出了当前层级。
关键要点
- “最快”取决于你的工作负载:延迟、吞吐量和一致性是不同的目标。
- 根据你自己的流量和区域进行测量,并关注p95而不是平均值。
- 像
eth_getLogs这样的重调用是感知缓慢的最常见原因。 - 从共享端点开始;当你能够指出瓶颈时,迁移到专用Polygon节点。
- 配置备用端点,并确保它支持WebSocket,如果你依赖订阅。
- 在信任任何端点之前,确认链ID 137并检查区块高度。
常见问题
公共Polygon RPC对于生产来说足够快吗?
对于轻量级工作负载,如钱包和低流量dApp,公共或共享端点通常足够。对于稳定或尖峰的生产流量,专用节点通常提供更一致的延迟和更少的速率限制意外。
如何测试Polygon RPC延迟?
从你自己的基础设施重复计时一个轻量级调用,如eth_blockNumber,并查看分布。然后重放你的真实调用的样本,包括重调用,以查看端点在你的实际请求组合下的行为。
Polygon使用什么链ID?
Polygon主网使用链ID 137,原生货币为POL。Polygon Amoy测试网使用链ID 80002。
更快的RPC会减少交易确认时间吗?
不会直接减少。确认时间取决于网络和gas价格。更快的RPC减少了提交和观察交易所需的时间,这改善了你应用的感知响应性。
何时应该迁移到专用Polygon节点?
当共享层级的延迟、速率限制或噪声邻居效应开始影响你的用户或后端,并且你能指出专用节点会改善的特定指标时。查看RPC定价和支持的网络来规划迁移。