簡體   English   中英

Node.js集群-檢測工作人員卡住了嗎?

[英]Node.js Cluster - detect worker stuck?

我正在將node.js與群集一起使用,通常使用2個cpu轉換為一個master和兩個worker。 我遇到一個偷偷摸摸的問題,偶爾(很少),其中一名工人由於某種原因被“卡住”,而另一名工人則承擔了所有的負擔。 我不確定原因並仍在調查(無內存泄漏,無堆棧溢出,無異常)。

在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(每分鍾減少一次),則會殺死該工人。

這就是我幾分鍾后實現(自己的)殺死卡住工人的目標的方式。 這不是一個完整的解決方案,我仍然不知道是什么原因導致工人毫無例外地陷入困境。 但這就是現在的生活。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM