プロセスマネージャ(pm2)の導入

Node.jsアプリケーションを本番環境で安定して運用するためには、**プロセスマネージャ(Process Manager)**の導入が重要です。その中でも広く使われているのが **PM2(Process Manager 2)**です。以下に、PM2の導入と活用方法について詳しく説明します。


1. PM2とは

PM2は、Node.jsアプリケーションのプロセス管理ツールであり、以下の機能を提供します:

  • アプリケーションの常時稼働(クラッシュ時の自動再起動)

  • 複数インスタンスの管理(クラスタリング)

  • ログ管理(stdout、stderr)

  • リソース監視(CPU、メモリ)

  • 起動スクリプトの永続化(OS再起動後も自動起動)

  • デプロイ管理機能(簡易的なデプロイが可能)


2. インストール

bash
npm install -g pm2

グローバルインストールにより、どこからでも pm2 コマンドを実行できます。


3. アプリケーションの起動

Node.jsアプリをPM2で起動するには、次のようにします:

bash
pm2 start app.js

オプション例:

bash
pm2 start app.js --name my-app --watch
  • --name:プロセスに名前を付ける

  • --watch:ファイルの変更を検知して自動再起動


4. プロセス管理コマンド

コマンド 説明
pm2 list 実行中のプロセス一覧
`pm2 stop <name id>`
`pm2 restart <name id>`
`pm2 delete <name id>`

5. ログの管理

bash
pm2 logs
  • アプリの標準出力やエラー出力をリアルタイムで確認可能。

  • ログは .pm2/logs/ に保存されます。


6. クラスターモード(負荷分散)

マルチコアCPUを活用してアプリを複数インスタンスで実行:

bash
pm2 start app.js -i max
  • -i max:CPUコア数に応じて最大インスタンス数を起動


7. 永続化(OS再起動後の自動起動)

次の2コマンドで、PM2のプロセスリストを保存し、システム起動時に復元可能にします。

bash
pm2 save pm2 startup
  • pm2 save:現在のプロセス状態を保存

  • pm2 startup:自動起動スクリプトを生成


8. 簡易デプロイ(オプション)

PM2にはecosystem.config.jsを使った簡易デプロイ機能もあります:

bash
pm2 deploy ecosystem.config.js production

まとめ

PM2は本番環境でNode.jsアプリケーションを安定的に運用するために非常に有用なツールです。特に以下の観点で重要です:

  • 自動再起動による可用性の確保

  • クラスタリングによるパフォーマンス向上

  • ログの統合管理と監視

  • サーバ再起動後の自動復旧

本番環境の運用において、PM2の導入は基本的なベストプラクティスといえるでしょう。

ChatGPT4o 生成日:2025/06/25