2011-04-14 11 views
8

Ponieważ węzeł jest w zasadzie pojedynczym procesem, gdy coś pójdzie nie tak, cała aplikacja umiera.Kiedy plik node.js przestaje działać, w jaki sposób mogę go automatycznie przywrócić?

Mam teraz kilka aplikacji zbudowanych na ekspresie i używam niektórych ręcznych metod, aby zapobiec wydłużonym przestojom (process.on ("uncaughtException") i niestandardowy monitor pulsu).

Wszelkie sugestie od społeczności? Najlepsze praktyki? Frameworki?

Dzięki!

Odpowiedz

5

Zastosowanie coś forever

lub wykorzystać supervisor.

Po prostu npm link, a następnie sudo supervisor server.js.

Te typy bibliotek obsługują również ponowne ładowanie. Niektóre z nich są używane z linii poleceń i uruchamiają usługi węzła jako procesy podrzędne. Są inni, którzy oczekują, że napiszesz swój kod, żeby się przeładować.

Idealnie, co chcesz przenieść do pełnego obciążonego systemu równoważenia obciążenia, który jest bezpieczny w razie awarii. Jeśli pojedynczy proces węzła w module równoważenia obciążenia zostanie zawieszony, należy go ponownie uruchomić po cichu, a wszystkie połączenia i dane uratować.

Osobiście polecam supervisor do programowania (jest napisany przez isaacs!) I pełnego równoważenia obciążenia (nginx lub węzeł) dla prawdziwego serwera produkcyjnego.

Oczywiście twoi już uruchomionych wiele procesów serwera węzeł równolegle ponieważ dbasz o skalowaniu na wielu rdzeniach prawej;)

3

Użyj forever.

"Proste narzędzie CLI za zapewnienie, że dany skrypt działa nieprzerwanie (czyli zawsze)"

Wystarczy zainstalować go z KMP

npm install forever 

i wpisz

forever start app.js 
1

będę zdecydowanie polecam też: forever.Używałem go wczoraj i jego Breeze:

  1. Install npm install forever

  2. Zacznij swoją aplikację forever start myapp.js

  3. Sprawdź, czy jego pracy forever list

Spróbuj zabijając swoją aplikację:

  1. ps

  2. Pobierz myapp.js PID i uruchomić kill <pid

  3. bieg forever list a zobaczysz, że to działa ponownie

0

można spróbować użyć fugi bibliotekę node.js podobny do Spark lub Unicorn:

https://github.com/pgte/fugue

Fuga może zarządzać każdym typem serwera node.js, nie tylko serwerem sieciowym, i jest skonfigurowany i skonfigurowany jako skrypt node.js, a nie jako polecenie CLI, więc można używać go z normalnymi zestawami narzędzi do wdrażania node.js.

2

Jeśli używasz Ubuntu, możesz użyć upstart (który jest instalowany domyślnie).

$ cat /etc/init/my_app.conf

opisem "my_app" autor "ja"

(początek na lokalnym systemie plików i net-device-up IFACE = eth0) zatrzymać na zamykania

respawnu

exec sh -c "env NODE_ENV = /path/myapp/app.js węzeł produkcja >> /var/log/node.log 2> & 1"

"respawn" oznacza, że ​​aplikacja zostanie uruchomiona ponownie, jeśli umrze.

Aby uruchomić aplikację

początek my_app

przypadku innych poleceń

człowiek initctl

Powiązane problemy