node.jsのプロセス・マネージャー(PM)とデプロイツール

  • 10
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

プロセス・マネージャーの利用

node.jsをインストールした際にバンドルされるnodeコマンドでは、プロセスの監視は行われず、異常終了すると落ちたままになってしまいます。

$ node /<path>/app.js 

運用環境では、サービスが停止してしまうので、nodeプロセスを監視し、必要であれば再起動する必要があります。
これらの管理を行ってくれるのが、プロセス・マネージャーです。

  • プロセスが異常終了した際に再起動する
  • リソース利用率などを表示する
  • クラスタリングの制御

また、PMによっては、デプロイをサポートしているものもあります。

PM ローリングリスタート 起動スクリプト ログローテーション デプロイツール リモートデプロイ クラスタリング
forever × × × × × ×
PM2
StrongLoop ProcessManager
  • forever
    • PMのみ
    • 起動スクリプトは、initd-forever などで別途用意する必要がある
    • デプロイに関しても、Capistranoなどのツールを利用する必要がある
  • PM2
    • PM、リソースモニター、デプロイツールなど一通り揃っている
    • 最近、複数台のサーバーへのデプロイも可能になる
    • シンボリックリンクを利用したデプロイも検討中(graceful?ローリング?リスタートを考えると難しそう)
  • StrongLoop ProcessManager

所感としては、 forever だと機能不足。
StrongLoop ProcessManager だと、シンプルなserver.jsアプリケーションや、Expressフレームワークを利用したアプリケーションでは、大げさすぎる。
2〜3台のサーバーで運用するのであれば、 PM2 が程よいのではないかと思います。

Tips

開発環境用PM

  • hotnode
    • 開発環境用であれば、JSファイルを変更すると自動的にリロードを行ってくれるhotnodeが便利です。
    • ただし、htmlファイルなど、静的なファイルを編集しても、リロードはされません。(監視しているのは、JSファイルだけのよう)