プロセス・マネージャーの利用
node.jsをインストールした際にバンドルされるnodeコマンドでは、プロセスの監視は行われず、異常終了すると落ちたままになってしまいます。
$ node /<path>/app.js
運用環境では、サービスが停止してしまうので、nodeプロセスを監視し、必要であれば再起動する必要があります。
これらの管理を行ってくれるのが、プロセス・マネージャーです。
- プロセスが異常終了した際に再起動する
- リソース利用率などを表示する
- クラスタリングの制御
また、PMによっては、デプロイをサポートしているものもあります。
PM | ローリングリスタート | 起動スクリプト | ログローテーション | デプロイツール | リモートデプロイ | クラスタリング | |
---|---|---|---|---|---|---|---|
forever | ○ | × | × | × | × | × | × |
PM2 | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
StrongLoop ProcessManager | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
- forever
- PMのみ
- 起動スクリプトは、initd-forever などで別途用意する必要がある
- デプロイに関しても、Capistranoなどのツールを利用する必要がある
- PM2
- PM、リソースモニター、デプロイツールなど一通り揃っている
- 最近、複数台のサーバーへのデプロイも可能になる
- シンボリックリンクを利用したデプロイも検討中(graceful?ローリング?リスタートを考えると難しそう)
- StrongLoop ProcessManager
- LoopBackフレームワーク用のPM
所感としては、 forever だと機能不足。
StrongLoop ProcessManager だと、シンプルなserver.jsアプリケーションや、Expressフレームワークを利用したアプリケーションでは、大げさすぎる。
2〜3台のサーバーで運用するのであれば、 PM2 が程よいのではないかと思います。
Tips
開発環境用PM
- hotnode
- 開発環境用であれば、JSファイルを変更すると自動的にリロードを行ってくれるhotnodeが便利です。
- ただし、htmlファイルなど、静的なファイルを編集しても、リロードはされません。(監視しているのは、JSファイルだけのよう)