故障排查方法论
Global Synchronizer 节点问题系统化排查与信息收集。
诊断和解决全局synchronizer问题的系统方法
本节概述了可以收集哪些信息来调试 Canton Network 节点中的问题。有关直接通过控制台访问 Canton 节点的信息,请参阅 Canton 控制台参考。
哪里可以找到日志
本地启动时,splice-node 将创建位于存储库根目录的 log/ 目录并登录到 canton_network.log。Canton 写入canton.log。
当节点在 kubernetes 集群中启动时,我们建议设置日志收集器,以便您可以捕获至少最后一天的日志。目前,默认日志级别设置为“调试”。
我们推荐使用lnav来读取日志。 本文档中提供了指南。
kubectl describe pod <pod-name>获取给定 Pod 的详细状态,kubectl logs <pod-name> -n <namespace-name>或kubectl logs -l app=<app-name> -n <namespace-name> --tail=-1获取给定命名空间中给定 pod 的日志。
Web UI 中的调试问题
当遇到与连接问题相关的问题时,如果您使用的是基于 Chrome 或 Firefox 的浏览器:
- 转到浏览器地址栏的右侧,进入设置,然后
More tools -> Developer tools(或按 Ctrl + Shift + i)。您的浏览器开发人员工具窗口将打开。 - 单击
Network选项卡。 - 启用
Preserve or Persist log复选框。 - 在控制台保持打开状态的同时,重现您要报告的问题。
5.完成后,右键单击并选择
Save all as HAR - 使用问题描述命名文件并保存。
完成后,通过单击 Console 选项卡而不是 Network 选项卡重复 2-6。
配置
对诊断问题通常非常有帮助的另一件事是收集所有配置。
- 本地运行时的应用程序配置文件,
- 使用 helm 图表时的 helm 值 (
helm get values -n <namespace> <chartname>), - 使用 docker 容器时的环境变量,但不包括 helm 图表。
除此之外,还要检查您正在使用的版本以及您正在运行的网络(开发/测试/主网)。
常见错误消息
流量余额低于预留量
下面显示的表单日志表明您的验证者应用程序无法购买任何流量。一旦购买的流量余额低于给定数量,验证者就会阻止不需要购买更多流量的交易,以避免验证者因没有足够的流量来完成流量购买而将自己锁定的问题。检查TopupMember流量Trigger的日志以查找可能的原因。
如果您只想依赖免费流量,不想购买任何额外流量,请删除验证者充值配置。
ABORTED: Traffic balance below reserved traffic amount (0 < 200000)
资金不足,无法购买配置流量
如下所示的日志表明您的验证者应用程序尝试购买流量,但验证者运营方的钱包中没有足够的流量。这在新节点的 TestNet 和 MainNet 上很常见,因为它们一开始的余额为 0,并且只能通过验证者活跃度奖励慢慢积累 CC。通常这只需要等待,直到积累了足够的 CC。或者,拥有 CC 余额的现有节点可以将 CC 转移给您以增加您的余额。
如果您只想依赖免费流量,不想购买任何额外流量,请删除验证者充值配置。
Insufficient funds to buy configured traffic amount. Please ensure that the validator’s wallet has enough amulets to purchase 1.9998 MB of traffic to continue healthy operation.
放弃获取应用程序版本下面表格的日志通常可以表明您在预期使用 SV URL 的位置使用了扫描 URL,反之亦然。请注意前缀 https://scan. 和末尾的路径 /api/sv 之间的不匹配。
在 docker-compose 设置中,验证传递给 -s 的 URL,该 URL 应是 SV URL 或用于 helm 部署的 svSponsorAddress。
2025-02-11T10:16:13.098Z [⋮] ERROR - o.l.s.v.ValidatorSvConnection:validator=validator_backend (7427be2620676fce8a464eee769eb1d8-app_version-2d71c55f5ecd731b-793d382fa2d6ce14) - Gave up getting 'app version of https://scan.sv-2.dev.global.canton.network.digitalasset.com/api/sv' org.apache.pekko.http.scaladsl.unmarshalling.Unmarshaller$UnsupportedContentTypeException: Unsupported Content-Type [Some(text/html)], supported: application/json
验证者、sv 和扫描应用程序中出现未经身份验证的错误
SV、扫描或验证者应用程序日志中的以下形式的日志表明与参与者的连接存在身份验证错误。检查参与者日志,其中包含有关请求被拒绝原因的更多详细信息。
2025-02-14T11:32:00.304Z [⋮] INFO - o.l.s.v.ValidatorApp:validator=validator_backend (50836441bf579035d64a56f776566cbf) - The operation 'Get user 7D95xiEUxju4IUXFQgyUrwHMMuZO0g2F@clients' failed with a retryable error (full stack trace omitted): UNAUTHENTICATED: An error occurred. Please contact the operator and inquire about the request efd009557dec03da74dd29b723949cd6 with tid efd009557dec03da74dd29b723949cd6
节点具有身份 X,但预期标识符 Y
验证者或 SV 应用程序中的以下表单日志表明您在初始化后尝试更改用于参与者(或 SV 序列器、中介器)的标识符。请注意,对于验证者,节点标识符默认为您的验证者PartyHint,因此更改也会产生此错误。对于 SV,它默认为 SV 名称。如果这是一个新节点,最简单的选择是通过删除参与者和验证者或 SV Sequencer、参与者、中介器、验证者、sv 和扫描应用程序的相应数据库来重置节点。删除数据库后,再次启动您的节点。
如果这不是新节点,请将值更改回之前的值。
│Caused by: io.grpc.StatusRuntimeException: INTERNAL: Node has identity a-b-c-1::122098ffcd99..., but identifier a-b-1 was expected. │
连接到Sequencer时出现 MemberDisabled 错误
您的参与者中的以下表格的日志表明它的关闭时间超过了 30 天的测序器修剪窗口,因此 SV 已将其禁用。任何连接尝试都会失败并出现相同的错误。您可以通过 验证者_reonboard 启动新节点来恢复 CC 余额。
2025-04-16T08:18:06.451Z [⋮] DEBUG - c.d.c.s.c.t.GrpcSequencerSubscription:participant=participant/domainId=global-domain::12206d339948/sequencerAlias=Some-Alias (---) - Completed subscription with Success(GrpcSubscriptionError(Request failed for sequencer.
GrpcRequestRefusedByServer: FAILED_PRECONDITION/MemberDisabled(PAR::validator1::12203d9ed85f...)
Request: subscription
本文由 CC Privacy Club 根据 Canton Network 官方文档(CC-BY-4.0)整理翻译,仅供学习;实现细节以官方最新版本为准。