google-cloud-platform - CHAINLINK NODE - 您的节点超载,可能会开始丢失作业错误
问题描述
在 GCP 中运行测试节点,使用 Docker 9.9.4、Ubuntu、Postgres db、Infura。我遇到了公共/私有 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
解决方案
此日志输出与您的区块链连接过载有关。此通知通常与公共 websocket 连接和/或免费第三方 NaaS 提供商的使用有关。要解决此连接问题,您可以运行自己的完整节点或更改层级或第三方 NaaS 提供商。另外建议使用 Chainlink 版本0.10.8
或更高版本,因为HeadTracker
这里已经修改并且执行效率更高。
关于这个问题,让我试着给你一个小的技术概述,它可以阐明 Chainlink 节点对其远程完整节点的有效负载:
您的 Chainlink 节点与完整节点建立连接。Chainlink 节点在那里发起各种订阅,这是 websocket 协议的一个特殊功能,可以实现双向通信。更准确地说,这意味着如果订阅的某个“状态”发生变化,就会通知 Chainlink 节点。基本上,节点使用 JSON-RPC 方法进行交互,并使用以下方法在内部启动和处理各种功能
:eth_getBlockByNumber
, eth_getBalance
, eth_getTransactionReceipt
, eth_getTransactionCount
, eth_getLogs
, eth_subscribe
,eth_unsubscribe
和https://ethereum.org/uk/developers/docs/apis/json- RPC/eth_sendRawTransaction
eth_Call
Chainlink 节点的大量交互特别是在同步过程中通过内部HeadTracker
服务执行。该服务启动“头部”订阅,以便与每个传入的新区块头交互。在此同步过程中,它使用 JSON-RPC 方法eth_GetBlockByNumber
并eth_getBalance
从块中获取所有必要的信息。所以这两种方法在每个块中都被使用/执行。请求数量现在取决于 Chainlink 节点连接到的网络的平均阻塞时间
Kovan 测试网就是一个例子:
平均 这里的阻塞时间是 6.7 秒,这意味着您每天的请求数约为。21.000 在完成工作请求期间,这些请求还包括以下方法:eth_getTransactionReceipt
、eth_sendRawTransaction
、eth_getLogs
、eth_subscribe
、和eth_unsubscribe
,这会根据工作请求的数量显着增加总数。还应该注意的是,特别是对于更快的区块链(例如多边形),WebSocket 的负载非常高,您必须详细处理良好的全节点连接,因为许多全节点不会收到如此大量的请求永久。eth_getTransactionCount
eth_call
推荐阅读
- ios - Swift iOS - setContentHuggingPriority 优先考虑错误的标签
- node.js - 为什么当我控制台记录 imageUrl 时,我会变得不确定?
- python - 如何使用 Python 类属性作为 @Classmethod 的默认值?
- parsing - Gnu Bison shift /减少描述层次表达式的基于缩进的语法中的冲突
- css - 图标字体的CSS字体系列后备?
- android - 使用 animateToRegion() 与 animateCamera() 的优缺点
- ansible - 如何检查字符串中的几个关键字并断言是否不存在于 Ansible 任务中
- sockets - 同步 I/O 是否使线程忙?
- python - 多次拟合回归并收集汇总统计信息
- css - 我在看一个 react 页面的 css sheet,很多类都在使用内容来生成图片,但是 VSCode 中的内容显示是一个