Node.js/geth : 执行 js 创建僵尸进程并停止,可能的资源泄漏
Node.js/geth : executing js creates zombie process and stops , possible resource leak
我是 运行 一个 js 代码,在 web3 包上连接到 JSON RPC API for geth。该代码遍历传入块的每个事务,如果不是内部钱包则跳过,如果是则通过 http 请求将信息发送到另一台服务器。
这段代码不知何故开始产生大量僵尸进程,当计数正好达到 2040 时,它停止的进程仍然存在,但日志正在停止,这意味着代码没有执行。尽管我无法找到代码中的哪一行正在创建额外的进程,但我有一个问题 --> 这些是已失效的进程,因此它们已经退出,但它们为什么持有资源,或者不是?如果不是那么为什么它正好停在那个 2040 数字,还有回调函数可能会创建僵尸的可能性
代码使用了eth.filter.watch函数,由于要不断收集区块信息,所以没有关闭..
这是我的上衣
这是我的免费-h
所以,我找到了解决方案。显然,有一个回调函数没有得到正确处理,从而造成了泄漏。当 ram 充满了它可以处理的进程时,它就停在那个数字上。当我将代码更改为 return 以正确的方式回叫时,它起作用了。
我是 运行 一个 js 代码,在 web3 包上连接到 JSON RPC API for geth。该代码遍历传入块的每个事务,如果不是内部钱包则跳过,如果是则通过 http 请求将信息发送到另一台服务器。
这段代码不知何故开始产生大量僵尸进程,当计数正好达到 2040 时,它停止的进程仍然存在,但日志正在停止,这意味着代码没有执行。尽管我无法找到代码中的哪一行正在创建额外的进程,但我有一个问题 --> 这些是已失效的进程,因此它们已经退出,但它们为什么持有资源,或者不是?如果不是那么为什么它正好停在那个 2040 数字,还有回调函数可能会创建僵尸的可能性
代码使用了eth.filter.watch函数,由于要不断收集区块信息,所以没有关闭..
这是我的上衣
这是我的免费-h
所以,我找到了解决方案。显然,有一个回调函数没有得到正确处理,从而造成了泄漏。当 ram 充满了它可以处理的进程时,它就停在那个数字上。当我将代码更改为 return 以正确的方式回叫时,它起作用了。