pm2とdockerを一緒に使う意味は何ですか? 質問する

pm2とdockerを一緒に使う意味は何ですか? 質問する

私たちは、サーバー上でアプリケーションを実行するためにpm2をかなりうまく使ってきました。現在dockerに移行しており、詳しくは、http://pm2.keymetrics.io/docs/usage/docker-pm2-nodejs/ をご覧ください。

しかし、実際に両方を一緒に使用する意味は何でしょうか? docker は pm2 が提供するものすべてを提供しませんか?

ベストアンサー1

通常、docker 内で pm2 を使用する意味はありません。

PM2 と Docker はどちらもプロセス マネージャーであり、ログ転送、クラッシュしたワーカーの再起動など、さまざまな機能を実行できます。Docker コンテナー内で pm2 を実行すると、少なくとも次の点において、サービスに関する潜在的な問題が隠されます。

1) pm2でコンテナごとに1つのプロセスを実行すると、メモリ消費量の増加以外に大きなメリットはありません。再起動は純粋なdockerで実行できます。再起動ポリシー他の Docker ベースの環境 (ECS や Kubernetes など) でも同様に実行できます。

2) 複数のプロセスを実行すると、監視が難しくなります。CPU/メモリ メトリックは、囲む環境で直接利用できなくなります。

3) 単一のPM2プロセスに対するヘルスチェック要求はワーカー間で分散されるため、不健全なターゲットが隠れてしまう可能性がある。

4) ワーカーのクラッシュは pm2 によって隠されます。監視システム (CloudWatch など) からそのクラッシュについて知ることはほとんどありません。

5) 実質的には複数レベルの負荷分散が必要になるため、負荷分散はより複雑になります。

また、Docker コンテナ内で複数のプロセスを実行することは、コンテナごとに 1 つのプロセスを維持するという Docker の理念に反します。

考えられるシナリオの 1 つは、Docker 環境の制御が非常に限られている場合です。この場合、pm2 を実行することが、ワーカーのスケジュールを制御する唯一のオプションである可能性があります。

おすすめ記事