[Tour De SOL] 第二期测试总结 Dry Run #2

昨天,我们对 Tour de SOL 进行了第二次测试。此次测试安排在第一次测试后一周左右的时间进行。如果你还没有阅读第一次测试的汇报,可在此处[1] 查看。

由于我们最近通过媒体进行了宣传,这次 Tour de SOL 引起了许多人的关注,参与者中出现了大量新面孔。我们同时也看到了许多早期测试中熟悉的面孔,这太棒了。

在我们深入介绍第 2 次测试 (DR2) 的具体情况之前,我想回顾一下此次测试相较上一次有何改变:

修复了 UDP 数据包问题:在第一次测试中,使用 64kb UDP 数据包时大约有 50% 的数据包丢失,导致领导者无法与网络保持同步。数据包大小现已减小到约 1500 字节,并且已经过内部测试。预计这会导致一个短期的性能瓶颈,但此次实现在接下来的几周会进一步优化,届时瓶颈自会消失(问题链接:https://github.com/solana-labs/solana/issues/5294)
PoH 记录器提供给银行后,虚拟计时无法立即刷新。这会导致投票无效,使网络停止运行。这个问题已解决,PoH 记录器现在能够立即刷新虚拟计时(问题链接:https://github.com/solana-labs/solana/pull/5277[2])
之前的”权益质押”配置不实用。现在,此问题已得到解决,验证者可以正确地 (1) 从无任何权益的验证者开始,(2) 观察到验证者已实现同步并持续投票,以及 (3) 添加权益。

在宣布 DR2 之前,上述内容已在内部进行了测试。现在,需要补充的信息已介绍完毕。让我们来看看 DR2 期间发生了什么。

本次测试的参数

总体参数与第一次测试中的参数基本一样。我们希望在第 0 阶段结束之前,参数保持相对一致。

测试中使用了 3 个 Solana 节点来启动集群,预计之后不久会加入 28 个外部验证者
一开始,所有节点均接收 1 个 SOL,并建议它们使用其中的 50% 进行质押(与 Solana 节点匹配)
此时无需使用 GPU,因为目标是维持一个闲置的集群且不发送大量交易。
所有节点均使用最新的预发行版本 v0.18.0-pre0

测试详细经过

对于很希望参与此活动的新验证者来说,此次测试似乎更容易上手一些,因为其中一些参与者已经对我们的流程比较熟悉了。这还应归功于 OG 验证者,他们与新参与者共享知识,帮助他们减轻了参与难度。

我们在太平洋标准时间上午 8:00 左右启动了集群,并在上午 8:13 左右加入了验证者。之后,我们立即开始从所有参与者处获取大量日志。以下是我们在前 10 分钟内经常收到的一些问题:

无法创建投票帐户
由于端口配置错误而无法接收数据
由于投票帐户没有根槽而无法授权
有关投票权和权益预热期的查询

这些都是可以解决的问题,但这也意味着在沟通或指导方面我们还有待改进。除了上述问题,此次测试的开端总体来说很不错!

与第一次测试不同,此次测试中的验证者能够正确地与网络保持同步。这意味着,他们确实正在从网络上的其他验证者接收数据包,并成功进行投票。

我们对此是喜闻乐见的,因为这重现了几天前在我们的内部测试中发生的情况:它舒服地闲置了 12 个小时左右,连我们都快闲的发慌了…

所以当时我敢说,我们预期 DR2 会有类似的表现。因此,当我们无畏的领导者不得不去处理 IRL 承诺相关问题时,他坚信我们能坚守阵地。

但令人啼笑皆非的是,他刚离开,网络就开始显露出崩溃之势,这种恶化的趋势一直持续到晚上 9:07 左右。这时,网络已经变得非常不稳定了,因此我们正式宣布 DR2 终止,并开始从验证者处收集控制台日志。

然而事实是,网络在我们正式终止 DR2 之前就已经停止运行。参考下图就会发现网络在上午 8:35 左右停止运行,随后的集群停止运行更是引起一系列恐慌。

发现的主要 bug

权益过多,速度太快[3](集群因此而停止运行):我们发现了一个 bug,它使网络在跨越 epoch 界限时无法承受权益的大量增加(或概言之就是大量变动)。权益在每个 epoch 都会产生看涨压力,这就是界限如此重要的原因。在内部运行中,节点的开始状态非常接近。因此,即使总权益从 1x(启动权益)增加到 Nx(测试网中的 N 个节点),但由于它发生在 epoch 非常小的阶段,所以总权益的增长还不到前一个 epoch 的 2/3。有效地传播激活作用。在 TdS 中,似乎有许多节点在 epoch 6(较长的 epoch)同时上线。由于集群在这些节点上线之前已经运行了几分钟,我们已经过较短的 epoch(epoch 0-5),进入了一个 epoch 足够长的阶段,所以这时就涌现了许多节点(每个节点与我们的节点的权益相同)。当集群进入 epoch 7 时,总权益发生巨大变化,于是我们就遇到了这个 bug。

流言数据包恐慌[4]:我们需要使流言不受 data_blobs 的大小限制影响

(虚拟)内存不足[5]:在测试期间,验证者报告他们遇到了 OOM(内存不足)情况。我们认为可能是已达到 vm_max_map_count

Solana-install init bug[6]

Dyn.com 临时停机缓解措施[7]:

快照硬链接 bug[8]

Solana-wallet CLI 可用性改进

https://github.com/solana-labs/solana/issues/5437[9]

https://github.com/solana-labs/solana/issues/5436[10]

https://github.com/solana-labs/solana/issues/5435[11]

https://github.com/solana-labs/solana/issues/5439[12]

集群日志/指标/rpc 分类的改进:

https://github.com/solana-labs/solana/issues/5441[13]

https://github.com/solana-labs/solana/issues/5445[14]

后续步骤和结语

我们总共记录了 11 个问题作为 DR2 的直接结果。这非常棒!上述所有问题中,此问题[15] 是我们进行下一次测试之前的主要障碍。但是,我们希望在下一次测试之前能把其他问题中的大多数/全部都解决了。实际上,在撰写本文时,大多数 DR2 问题已得到解决!

但我认为先前发现的许多关于文档质量的问题仍然存在。请放心,我们正在努力解决它们。希望在 DR3 或 DR4 之前我们能够推出一些解决方案。我们正在积极收集相关反馈,以及社区认为我们应该关注的其他方面的反馈。因此,请随时与我们联系,或在我们的论坛中发表你的想法。

再次感谢参与此次测试的每一个人[16]以及所有社区成员!你们真的太棒了。