2015-09-12 113 views
6

我正在使用node.js並使用集羣模塊。每次我跑cluster.fork(),我總是得到一個每次運行cluster.fork()時,都會得到一個錯誤:bind EADDRINUSE

throw er; // Unhandled 'error' event 
Error: bind EADDRINUSE 
    at exports._errnoException (util.js:746:11) 
at cb (net.js:1205:33) 
at rr (cluster.js:592:14) 
at Worker.<anonymous> (cluster.js:563:9) 
at process.<anonymous> (cluster.js:692:8) 
at process.emit (events.js:129:20) 
at handleMessage (child_process.js:324:10) 
at Pipe.channel.onread (child_process.js:352:11) 

我一直在谷歌上搜索這個,我不知道這是怎麼發生的,因爲我沒有在任何端口號傳遞。

感謝

編輯:郵政代碼

var setupWorkers = function() { 
    if (cluster.isMaster) { 
    // Fork workers. 
     for (var i = 0; i < 5; i++) { 
     cluster.fork(); 
    } 

} 

,這是一個被稱爲中,我通過調用節點運行app.js功能app.js

+0

請張貼您的代碼。 – baao

+0

你使用什麼節點版本? – laggingreflex

+0

我正在使用節點v0.12.7 – Gakho

回答

0

我開始一個服務器不止一次的所有線程,所以端口已經綁定

0

堆棧跟蹤你提供表示EADDRINUSE來自net模塊。 EADDRINUSE通常意味着您正在嘗試多次監聽IP /端口組合。因此,例如,如果這是一個集羣Web服務器,可能您的所有工作人員都嘗試在同一IP地址上綁定到端口80。沒有更多的代碼,就不可能知道發生了什麼。

您在後續評論中給出的示例代碼不會爲我觸發EADDRINUSE。相反,它在cluster.fork is not a function時出錯,因爲在撥打cluster.fork()之前沒有檢查cluster.isMaster

相關問題