CHAINLINK 节点 - 您的节点过载并且可能开始丢失作业错误

CHAINLINK NODE - Your node is overloaded and may start missing jobs ERROR

运行 GCP 中的一个测试节点,使用 Docker 9.9.4、Ubuntu、Postgres 数据库、Infura。我遇到了 public/private IP 的问题,但是一旦我清除了我的节点已启动并且 运行。我现在反复抛出下面的错误,可能是由于区块链连接。我该如何解决这个问题?

[ERROR] HeadTracker: dropping head 26085153 with hash 0xf50e19099b7e343829935d70dd7d86c5bc0398286b7a4e4f32ac033ac60c3733 because queue is full. WARNING: Your node is overloaded and may start missing jobs. logger/default.go:155 stacktrace=github.com/smartcontractkit/chainlink/core/logger.Errorf

此日志输出与您的区块链连接过载有关。 此通知通常与 public websocket 连接 and/or 免费第三方 NaaS 提供商的使用有关。要解决此连接问题,您可以 运行 自己的完整节点或更改层或第三方 NaaS 提供商。此外,建议使用 Chainlink 版本 0.10.8 或更高版本,因为 HeadTracker 已在此处进行了修改并且执行效率更高。

关于这个问题,让我试着给你一个小的技术概述,这可能会阐明一个 Chainlink 节点到它的远程全节点的负载:

您的 Chainlink 节点与全节点建立连接。 Chainlink 节点在那里发起各种订阅,这是 websocket 协议的一个特殊功能,可以实现双向通信。更准确地说,这意味着如果订阅的某个“状态”发生变化,Chainlink 节点会收到通知。基本上,节点使用JSON-RPC方法进行交互,并使用以下方法在内部启动和处理各种功能: eth_getBlockByNumbereth_getBalanceeth_getTransactionReceipteth_getTransactionCounteth_getLogseth_subscribeeth_unsubscribeeth_sendRawTransactioneth_Call https://ethereum.org/uk/developers/docs/apis/json-rpc/

Chainlink 节点的大量交互尤其在通过内部 HeadTracker 服务的同步过程中执行。该服务启动“头”订阅,以便与每个传入的新块头进行交互。 在此同步过程中,它使用 JSON-RPC 方法 eth_GetBlockByNumbereth_getBalance 从块中获取所有必要的信息。所以这两种方法在每个块中都被使用/执行。现在请求的数量取决于 Chainlink 节点连接到的网络的平均阻塞时间

Kovan 测试网就是一个例子:

平均。这里的阻塞时间是 6.7 秒,这意味着你每天收到大约 2 个请求。 21.000 在完成工作请求期间,这些请求还包括以下方法:eth_getTransactionReceipteth_sendRawTransactioneth_getLogseth_subscribeeth_unsubscribeeth_getTransactionCounteth_call,这会根据工作请求的数量显着增加总数。 还应该注意的是,尤其是对于更快的区块链(例如多边形),WebSocket 的负载非常高,您必须详细处理良好的全节点连接,因为许多全节点不会收到如此多的请求永久。