Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Node.js群集-是否检测工作进程被卡住?_Linux_Node.js_Cluster Computing - Fatal编程技术网

Linux Node.js群集-是否检测工作进程被卡住?

Linux Node.js群集-是否检测工作进程被卡住?,linux,node.js,cluster-computing,Linux,Node.js,Cluster Computing,我将node.js与集群一起使用,通常使用两个cpu,转换为一个主节点和两个工作节点。 我遇到了一个棘手的问题,偶尔会有一个工人“卡住” 由于某种原因,而另一个承担了所有的负担。 我不确定原因,仍然在调查没有内存泄漏,没有堆栈溢出,没有异常 在linux上查看使用top bash命令的进程时,我可以清楚地看到其中一个节点进程在100%的cpu负载下是稳定的 我今天想问你们的是,你们是否知道一种方法,当一个工人100%工作时,检测这种情况,这样我就可以把它干掉。查看软件包。 这样的办法应该行得通。

我将node.js与集群一起使用,通常使用两个cpu,转换为一个主节点和两个工作节点。 我遇到了一个棘手的问题,偶尔会有一个工人“卡住” 由于某种原因,而另一个承担了所有的负担。 我不确定原因,仍然在调查没有内存泄漏,没有堆栈溢出,没有异常

在linux上查看使用top bash命令的进程时,我可以清楚地看到其中一个节点进程在100%的cpu负载下是稳定的

我今天想问你们的是,你们是否知道一种方法,当一个工人100%工作时,检测这种情况,这样我就可以把它干掉。

查看软件包。 这样的办法应该行得通。我跳过了群集和工作程序设置

var usage = require('usage');    
setInterval(function() {
    usage.lookup(worker.process.pid, function(err, result) {
        console.log(result);
        if(result.cpu > 90){
            worker.kill();
        }
    });
}, 5000)
嗯, 这就来了。 结果我的工人被卡住了。不知道为什么,但这可能是一个群集问题,您称之为群集%^&$ 不管怎样,我必须由船长监督工人。 我所做的是使用cron每分钟从每个工作人员向主机报告,如下所示:

process.send{id:cluster.worker.id}

大师会收到这个信息,并且知道这个工人还活着,身体健康。 然后,主服务器记录缺少的工作响应。5分钟后,如果计数达到0(每分钟递减一次),则工作进程将被杀死

这就是我如何实现自己的目标,在几分钟后杀死一名卡住的工人。 这不是一个完整的解决方案,我仍然不知道是什么原因导致工人毫无例外地陷入困境。
但这就是现在的生活。

实际上,这不起作用,因为这依赖于工作人员来做报告。在我的案例中,工人完全陷入困境,停止报告。我添加了一个我回复到的答案,实际上,我在Postgresql模块中遇到了一个类似的情况,它的客户端已经用完,清理它们还不够,我实现了一个类似的解决方案。在我做出回应后,我还注意到result.cpu在Mac OSX上无法正常工作。你是在Mac还是Linux上测试它?我很好奇,是不是因为Mac的缘故,逻辑不起作用了。