Node.jsアプリケーションを本番環境で安定して運用するためには、**プロセスマネージャ(Process Manager)**の導入が重要です。その中でも広く使われているのが **PM2(Process Manager 2)**です。以下に、PM2の導入と活用方法について詳しく説明します。
1. PM2とは
PM2は、Node.jsアプリケーションのプロセス管理ツールであり、以下の機能を提供します:
-
アプリケーションの常時稼働(クラッシュ時の自動再起動)
-
複数インスタンスの管理(クラスタリング)
-
ログ管理(stdout、stderr)
-
リソース監視(CPU、メモリ)
-
起動スクリプトの永続化(OS再起動後も自動起動)
-
デプロイ管理機能(簡易的なデプロイが可能)
2. インストール
グローバルインストールにより、どこからでも pm2 コマンドを実行できます。
3. アプリケーションの起動
Node.jsアプリをPM2で起動するには、次のようにします:
オプション例:
-
--name:プロセスに名前を付ける -
--watch:ファイルの変更を検知して自動再起動
4. プロセス管理コマンド
| コマンド | 説明 |
|---|---|
pm2 list |
実行中のプロセス一覧 |
| `pm2 stop <name | id>` |
| `pm2 restart <name | id>` |
| `pm2 delete <name | id>` |
5. ログの管理
-
アプリの標準出力やエラー出力をリアルタイムで確認可能。
-
ログは
.pm2/logs/に保存されます。
6. クラスターモード(負荷分散)
マルチコアCPUを活用してアプリを複数インスタンスで実行:
-
-i max:CPUコア数に応じて最大インスタンス数を起動
7. 永続化(OS再起動後の自動起動)
次の2コマンドで、PM2のプロセスリストを保存し、システム起動時に復元可能にします。
-
pm2 save:現在のプロセス状態を保存 -
pm2 startup:自動起動スクリプトを生成
8. 簡易デプロイ(オプション)
PM2にはecosystem.config.jsを使った簡易デプロイ機能もあります:
まとめ
PM2は本番環境でNode.jsアプリケーションを安定的に運用するために非常に有用なツールです。特に以下の観点で重要です:
-
自動再起動による可用性の確保
-
クラスタリングによるパフォーマンス向上
-
ログの統合管理と監視
-
サーバ再起動後の自動復旧
本番環境の運用において、PM2の導入は基本的なベストプラクティスといえるでしょう。
ChatGPT4o 生成日:2025/06/25