2015-09-12 11 views
6

Korzystam z node.js i korzystam z modułu klastra. Spędzaj uruchomić cluster.fork(), zawsze uzyskaćZa każdym razem, gdy uruchomię klaster.fork(), pojawia się błąd: powiązanie 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) 

Byłem googlowania tego, a ja nie mam pojęcia, jak to się dzieje, ponieważ ja nie przekazując żadnych numerów portów.

Dzięki

EDIT: Kod księgowania

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

} 

i jest to funkcja, która jest wywoływana w app.js które działają poprzez wywołanie węzeł app.js

+0

Proszę zaksięgować swój kod. – baao

+0

Którą wersję węzła używasz? – laggingreflex

+0

Używam węzła v0.12.7 – Gakho

Odpowiedz

0

Zaczynałem od serwera więcej niż jeden raz ze wszystkimi wątkami, więc port był już powiązany

0

ślad stosu ty provide wskazuje, że EADDRINUSE pochodzi z modułu net. EADDRINUSE oznacza zazwyczaj, że próbujesz odsłuchać kombinację IP/port więcej niż jeden raz. Na przykład, jeśli jest to klastrowany serwer WWW, być może wszyscy twoi pracownicy próbują powiązać port 80 na tym samym adresie IP. Bez większej ilości kodu nie da się powiedzieć, co się dzieje.

Przykładowy kod podany w kolejnym komentarzu nie wyzwala dla mnie EADDRINUSE. Zamiast tego zawiera błędy z cluster.fork is not a function, ponieważ nie ma czeku na cluster.isMaster przed wywołaniem cluster.fork().

Powiązane problemy