pm 2使用心得

2661 ワード

pm 2とforeverはNodejsサービスを起動するのによく使われる2つのツールです.この2つのコマンドを使用すると、nodeサービスをバックグラウンドで実行できます(linuxのnohupと似ています).また、サービスが異常またはその他の理由で殺された後に自動的に再起動できます.ノードの単一スレッド特性のため、自動再起動はその頑丈性を大幅に向上させることができます.本稿では、両者のツールの優劣を比較するのではなく、自分の使用と結びつけて、エンジニアリングの導入時にpm 2をよりよく使用する方法を簡単に紹介します.
きほんめいれいnpm install pm2 -g:グローバルインストール.pm2 start app.js:サービスを開始し、エントリファイルはapp.jsです.pm2 start app.js -i [n] --name [name]:nameという名前のn個のプロセスを開始します.npm restart [name or id]:サービスを再起動します.npm reload [name or id]:rastart機能と同じですが、0 sのシームレスな接続を実現できます.nginxの使用経験があれば、nginx reload命令を比較することができます.pm2 start app.js --max_memory_restart 1024M:メモリが1024 Mを超えると自動的に再起動します.プロジェクトで比較的厄介なメモリ漏洩の問題がある場合は、これは折衷案です.pm2 monit:サービスを監視します.
詳細はPM 2を参照してください
高度な使い方
pm 2サポートプロファイル起動:pm2 ecosystem:プロファイル生成ecosystem.json pm2 startOrRestart /file/path/ecosystem.json:プロファイルによるサービス開始
以下は私が開発したecosystem.jsonの内容です.
  {
    /**
    * Application configuration section
    * http://pm2.keymetrics.io/docs/usage/application-declaration/
    *     ,    apps      
    */
    apps : [
    // First application
        {
            name      : "nova",
            max_memory_restart: "300M",
            script    : "/root/nova/app.js",
            out_file : "/logs/nova_out.log",
            error_file : "/logs/nova_error.log",
            instances  : 4,
            exec_mode  : "cluster",
            env: {
                NODE_ENV: "production"
            }
        }
    ]
 }

上記clusterモードを用いて4つのサービスプロセスを開始した.サービスが300 Mを超えるメモリを使用すると、自動的に再起動されます.
モニタツール
pm 2のモニタリング機能はその大きな特色で、それが提供するモニタリングサービスKeymetrics monitoringはとてもクールで、興味のあるのは配置して遊ぶことができます.
いくつかの思考
1.サービスプロセス数
いくつかのプロセスを開始するには、サーバのカーネル数で決定し、いくつかのカーネルでいくつかのサービスを開始します.コマンドは次のとおりです.
  #     CPU  
  cat /proc/cpuinfo| grep "physical id" | sort| uniq | wc -l

  #       CPU core   (   )
  cat /proc/cpuinfo| grep "cpu cores"| uniq

  #     CPU   
  cat /proc/cpuinfo| grep "processor"| wc -l

もちろん、複数のポートを起動し、1つのポート番号で1つのサービスに対応することができます.そうすると、nignxが負荷等化を行う必要があります.
2.nginxが必要か
nginxでできることは主に2つあります.
  • 逆エージェントは、単純な負荷等化を実現します.複数のサーバまたは1つのサーバに複数のポートがある場合は、nginxを使用することを考慮できます.
  • 静的リソースキャッシュ:静的ページ、jsなどの静的リソースファイルをnginxに配置すると、サービスのパフォーマンスが大幅に向上します.

  • 3.導入の自動化
    shellスクリプトによってリソースの引き出し、サービスの再起動、nginxキャッシュの更新などの操作を実現し、pm 2の監視機能に合わせて、バックエンドエンジニアリングの配置の標準に初歩的に達した.
    参考資料:
  • pm 2公式サイト
  • node-deploy-practice
  • pm 2モニタ