1

我正在运行将web3包上的 js 代码连接到geth 的JSON RPC API。代码遍历传入块的每笔交易,如果不是内部钱包则跳过,如果是则通过 http 请求将信息发送到另一台服务器。

不知何故,这段代码开始产生大量的僵尸进程,当计数正好达到 2040 时,它停止进程保持活动状态,但日志停止本质上意味着代码没有执行。即使我无法找到代码中的哪一行正在创建额外的进程,但我有一个问题——>这些是已失效的进程,所以它们已经退出,但它们为什么持有资源,或者不是?如果不是,那么为什么它恰好停在 2040 数字上,回调函数是否有可能会创建僵尸?

该代码使用eth.filter.watch函数,该函数未关闭,因为它必须不断收集块信息..

这是我的上衣 在此处输入图像描述

这是我的免费 -h 在此处输入图像描述

4

1 回答 1

1

所以,我找到了解决方案。显然,有一个回调函数没有得到正确处理,从而造成了泄漏。当 ram 充满了它可以处理的进程时,它就会停在那个数字上。当我更改为以正确方式返回调用的代码时,它起作用了。

于 2018-04-26T06:04:29.887 回答