2015-09-12 10 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) 

を取得し、私は任意のポート番号を渡していないよので、私はこれが起こっているか見当がつかない。

おかげ

EDIT

:投稿コード

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

} 

、これは私がノードを呼び出すことによって実行app.jsに呼び出される関数では

+0

コードを投稿してください。 – baao

+0

どのノードのバージョンを使用していますか? – laggingreflex

+0

ノードv0.12.7を使用しています – Gakho

答えて

0

すべてのスレッドで複数回サーバーを起動していたので、ポートは既にバインドされています。

0

スタックトレースをapp.jsます提供するとがnetモジュールから来ていることを示します。 EADDRINUSEは通常、IP /ポートの組み合わせを複数回リッスンしようとしていることを意味します。たとえば、これがクラスタ化されたWebサーバーの場合、おそらくすべてのワーカーが同じIPアドレスのポート80にバインドしようとしています。それ以上のコードがなければ、何が起きているのかを知ることは不可能です。

次のコメントで指定したコード例は、私のためにEADDRINUSEをトリガーしません。代わりにcluster.isMasterのチェックがないので、cluster.fork()を呼び出す前にcluster.fork is not a functionでエラーが発生します。

関連する問題