PM2(Process Manager 2)は、Node.jsアプリケーションを管理するためのプロセスマネージャーです。Node.jsアプリケーションを本番環境や開発環境で効率的に運用するためのツールであり、アプリケーションの起動、監視、再起動、自動復旧などを簡単に行えます。
PM2の主な機能
- プロセスの管理:
- Node.jsアプリケーションをバックグラウンドで実行。
- 複数のアプリケーションを同時に管理。
- 自動再起動:
- アプリケーションがクラッシュした場合、自動的に再起動します。
- ロードバランシング:
- クラスターモードで複数のCPUコアを使用してアプリケーションの負荷分散を行います。
- ログ管理:
- 標準出力(stdout)やエラー出力(stderr)のログを記録し、後で確認できます。
- 永続化:
- サーバーの再起動後もPM2が自動的にアプリケーションを復元します。
- リソース監視:
- CPUやメモリ使用量をリアルタイムで監視。
- WebインターフェースやCLIで確認可能。
- エコシステムファイル:
- JSONファイルやYAMLファイルでアプリケーションの設定を管理。
- ホットリロード:
- ソースコードが変更された際に自動的にアプリケーションを再起動。
PM2のインストール
PM2はnpmを通じてインストールできます。
npm install -g pm2
PM2の基本コマンド
1. アプリケーションの起動
単一のアプリケーションを起動:
pm2 start app.js
特定の名前を付けて起動:
pm2 start app.js --name my-app
2. クラスターモードの起動
アプリケーションを複数のCPUコアで動作させる:
pm2 start app.js -i max
-i max
: 使用可能なすべてのCPUコアを使用します。
特定の数のインスタンスを指定する場合:
pm2 start app.js -i 4
3. 実行中のプロセスを確認
pm2 list
4. プロセスの停止・再起動
プロセスを停止:
pm2 stop <アプリケーションIDまたは名前>
プロセスを再起動:
pm2 restart <アプリケーションIDまたは名前>
すべてのプロセスを停止・再起動:
pm2 stop all pm2 restart all
5. プロセスの削除
pm2 delete <アプリケーションIDまたは名前>
6. ログの確認
リアルタイムでログを確認:
pm2 logs
特定のアプリケーションのログを確認:
pm2 logs <アプリケーションIDまたは名前>
7. PM2を永続化
サーバー再起動後もPM2で管理しているアプリケーションを自動起動:
pm2 startup pm2 save
8. モニタリング
リアルタイムでアプリケーションのリソース使用量を確認:bashコピーする編集する
pm2 monit
PM2のエコシステムファイル
複数のアプリケーションを一括で管理するために、エコシステムファイルを作成します。
エコシステムファイル例 (ecosystem.config.js):
module.exports = {
apps: [
{
name: "my-app",
script: "./app.js",
instances: "max", // 使用可能な全てのCPUコア
exec_mode: "cluster", // クラスターモード
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
},
},
],
};
エコシステムファイルの使用
エコシステムファイルを利用してアプリケーションを起動:
pm2 start ecosystem.config.js
環境を指定して起動:
pm2 start ecosystem.config.js --env production
PM2のユースケース
- 本番環境での安定運用:
- サーバーがクラッシュしても自動復旧するため、Node.jsアプリケーションの本番運用に適しています。
- 複数アプリケーションの同時管理:
- 複数のNode.jsアプリケーションを一括で管理可能。
- 開発環境でのホットリロード:
- コード変更時に自動再起動する機能を利用して、開発効率を向上。
- リソース監視:
- リアルタイムでCPUやメモリ使用量を監視して、パフォーマンスを把握。
PM2のメリットとデメリット
メリット
- Node.jsアプリケーションの管理が容易。
- クラッシュ時の自動復旧。
- ログ管理が統合されている。
- クラスターモードによるスケーラビリティ。
デメリット
- 小規模なアプリケーションではオーバーヘッドがある場合も。
- 非Node.jsアプリケーションの管理は限定的。
まとめ
PM2は、Node.jsアプリケーションの管理・運用に非常に適したツールです。特に本番環境での信頼性や効率性を向上させるために利用されます。簡単なセットアップで多くの機能を活用できるため、Node.jsを使ったプロジェクトでは非常に有用なツールです。
参考
PM2公式ドキュメント
URL: https://pm2.keymetrics.io/
PM2 GitHubリポジトリ
ライセンス:GNU-AGPL-3.0
URL: https://github.com/Unitech/pm2
PM2インストールガイド(公式)
URL: https://pm2.keymetrics.io/docs/usage/quick-start/
コメント