Nodejsチュートリアル30(終了):PM 2入門
13632 ワード
詳細については、GitHubブログにアクセスしてください.サンプルコードはここにアクセスしてください.
PM 2の概要
PM 2は一般的なnodeプロセス管理ツールであり、node.jsアプリケーション管理、例えば自動リロード、性能モニタリング、負荷等化などを提供することができる.同種のツールにはSupervisor、Foreverなどがあります.
PM 2取付
PM 2を使用するにはnpmグローバルインストールが必要です.
PM 2プロジェクトの開始
本明細書のテスト項目は、前の完了項目を直接選択し、住所は
プロジェクトを直接開始
pm 2はserver.js起動プロジェクトを直接実行することをサポートし、以下の通りである.
Node.jsアプリケーションを起動します.成功すると、印刷された情報が表示されます.
アプリケーションの名前がserver、idが0であることが表に表示され、アプリケーション名とidがアプリケーションの識別として使用できます.
プロファイルによるアプリケーションの管理
PM 2は、Javascript、JSON、YAMLなど、より豊富な構成を提供するプロファイル管理アプリケーションもサポートしています.具体的には、ドキュメントを表示することができます.
フォルダ構造
PM 2が起動すると、これらのフォルダが自動的に作成されます.
$HOME/.pm 2すべてのPM 2関連ファイル$HOME/.pm 2/logsすべてのアプリケーションログ$HOME/.pm 2/pidsすべてのアプリケーションpids$HOME/.pm 2/pm 2.log PM 2ログ$HOME/.pm 2/pm 2.pid PM 2 pid$HOME/.pm 2/rpc.sockリモートコマンドのソケットファイル$HOME/.pm 2/pub.sockパブリッシュ可能なイベントのソケットファイル$HOME/.pm 2/conf.js PM 2構成
Windowsでは、$HOME環境変数は$HOMEDRIVE+$HOMEPATH
適用リストの表示
コマンド
アプリケーションの詳細の表示
コマンドラインに
モニタCPU/メモリ
傍受コードの変更
次のコマンドを使用して、コードの保存を傍受し、アプリケーションを更新します.
PM 2は、server.jsファイルだけでなく、キーボードが
一部のファイルを無視する必要がある場合は、次のように設定できます. watchは、ブール値、パス配列、またはパスを表す文字列であってもよい.デフォルトはfalseです. ignore_watchは、chokidarによってglobまたは正規表現として解釈されるパス配列または文字列であってもよい. watch_optionsはchokidarに代わるオプションのオブジェクトです.定義についてはchokidarドキュメントを参照してください.
かんきょうかんり
プロジェクト開発においては、通常環境管理が必要であり、PM 2はプロファイルとコマンドラインパラメータを使用して環境を設定することができる.
プロファイルの追加
まず、
構成の変更
環境管理に役立つものは次のとおりです.
デルのプロジェクトに合わせて、構成を次のように変更できます.
起動コマンドは次のとおりです.
開発環境の開始
サービス側のコードでは、
たとえば、
サンプルコード:/lesson 29/config/index.js
ログ管理
PM 2は非常に強力なログ管理機能を提供し、様々な方法でログを表示することをサポートしています.特別な日付形式でログを表示する です. JSON形式でログを表示する です.最近の3行のログ という結果になります.
CLIリファレンス
上記のコマンド以外にも、PM 2には他にも多くの実用的なコマンドがありますが、ここでは一つ一つ挙げず、必要に応じてドキュメントを表示できます.
PM 2の概要
PM 2は一般的なnodeプロセス管理ツールであり、node.jsアプリケーション管理、例えば自動リロード、性能モニタリング、負荷等化などを提供することができる.同種のツールにはSupervisor、Foreverなどがあります.
PM 2取付
PM 2を使用するにはnpmグローバルインストールが必要です.
npm install -g pm2
PM 2プロジェクトの開始
本明細書のテスト項目は、前の完了項目を直接選択し、住所は
/lesson29/
である.プロジェクトを直接開始
pm 2はserver.js起動プロジェクトを直接実行することをサポートし、以下の通りである.
pm2 start server.js
Node.jsアプリケーションを起動します.成功すると、印刷された情報が表示されます.
[PM2] Spawning PM2 daemon with pm2_home=C:\Users\23101\.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting C:\xxx\lesson29\server.js in fork_mode (1 instance)
[PM2] Done.
┌────────┬────┬──────┬────────┬───┬─────┬───────────┐
│ Name │ id │ mode │ status │ ↺ │ cpu │ memory │
├────────┼────┼──────┼────────┼───┼─────┼───────────┤
│ server │ 0 │ fork │ online │ 0 │ 0% │ 32.0 MB │
└────────┴────┴──────┴────────┴───┴─────┴───────────┘
Use `pm2 show ` to get more details about an app
アプリケーションの名前がserver、idが0であることが表に表示され、アプリケーション名とidがアプリケーションの識別として使用できます.
プロファイルによるアプリケーションの管理
PM 2は、Javascript、JSON、YAMLなど、より豊富な構成を提供するプロファイル管理アプリケーションもサポートしています.具体的には、ドキュメントを表示することができます.
フォルダ構造
PM 2が起動すると、これらのフォルダが自動的に作成されます.
$HOME/.pm 2すべてのPM 2関連ファイル$HOME/.pm 2/logsすべてのアプリケーションログ$HOME/.pm 2/pidsすべてのアプリケーションpids$HOME/.pm 2/pm 2.log PM 2ログ$HOME/.pm 2/pm 2.pid PM 2 pid$HOME/.pm 2/rpc.sockリモートコマンドのソケットファイル$HOME/.pm 2/pub.sockパブリッシュ可能なイベントのソケットファイル$HOME/.pm 2/conf.js PM 2構成
Windowsでは、$HOME環境変数は$HOMEDRIVE+$HOMEPATH
適用リストの表示
コマンド
pm2 list
を使用して、アプリケーションのリストを表示します.┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬───────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼───────┼──────────┤
│ server │ 0 │ 1.0.0 │ fork │ 24776 │ online │ 9 │ 19m │ 0% │ 35.4 MB │ 23101 │ disabled │
└──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴───────┴──────────┘
アプリケーションの詳細の表示
コマンドラインに
pm2 show 0
と入力し、次のメッセージをポップアップします. Describing process with id 0 - name server
┌───────────────────┬─────────────────────────────────────────────┐
│ status │ online │
│ name │ server │
│ version │ 1.0.0 │
│ restarts │ 0 │
│ uptime │ 3m │
│ script path │ C:\xxx\lesson29\server.js │
│ script args │ N/A │
│ error log path │ C:\Users\23101\.pm2\logs\server-error.log │
│ out log path │ C:\Users\23101\.pm2\logs\server-out.log │
│ pid path │ C:\Users\23101\.pm2\pids\server-0.pid │
│ interpreter │ node │
│ interpreter args │ N/A │
│ script id │ 0 │
│ exec cwd │ C:\xxx\lesson29 │
│ exec mode │ fork_mode │
│ node.js version │ 11.9.0 │
│ node env │ N/A │
│ watch & reload │ ✘ │
│ unstable restarts │ 0 │
│ created at │ 2019-04-09T14:07:23.918Z │
└───────────────────┴─────────────────────────────────────────────┘
Revision control metadata
┌──────────────────┬──────────────────────────────────────────┐
│ revision control │ git │
│ remote url │ https://github.com/chencl1986/Blog.git │
│ repository root │ C:\xxx\Blog │
│ last update │ 2019-04-09T14:07:24.928Z │
│ revision │ 08f1efdfeb48bcc87f96b563d4d013a22e42ed9f │
│ comment │ │
│ branch │ master │
└──────────────────┴──────────────────────────────────────────┘
Actions available
┌────────────────────────┐
│ km:heapdump │
│ km:cpu:profiling:start │
│ km:cpu:profiling:stop │
│ km:heap:sampling:start │
│ km:heap:sampling:stop │
└────────────────────────┘
Trigger via: pm2 trigger server
Code metrics value
┌────────────────────────┬───────┐
│ Heap Size │ 13.70 │
│ Heap Usage │ 59.91 │
│ Used Heap Size │ 8.21 │
│ Active requests │ 0 │
│ Active handles │ 4 │
│ Event Loop Latency │ 2.30 │
│ Event Loop Latency p95 │ 7.15 │
│ HTTP Mean Latency │ 10 │
│ HTTP P95 Latency │ 10038 │
│ HTTP │ 0 │
└────────────────────────┴───────┘
Add your own code metrics: http://bit.ly/code-metrics
Use `pm2 logs server [--lines 1000]` to display logs
Use `pm2 env 0` to display environement variables
Use `pm2 monit` to monitor CPU and Memory usage server
モニタCPU/メモリ
pm2 monit
メソッドを使用すると、CPUとメモリの使用状況を監視でき、同時に適用されたエラーメッセージもGlobal Logsウィンドウに印刷されます.以下のようにします.傍受コードの変更
次のコマンドを使用して、コードの保存を傍受し、アプリケーションを更新します.
pm2 start server.js --watch
PM 2は、server.jsファイルだけでなく、キーボードが
ctrl + s
を押したり、ファイルを新規作成したりするなど、任意のモジュールコードが保存されている限り、参照されているすべてのモジュールをリスニングします.一部のファイルを無視する必要がある場合は、次のように設定できます.
{
"watch": ["server", "client"],
"ignore_watch" : ["node_modules", "client/img"],
"watch_options": {
"followSymlinks": false
}
}
かんきょうかんり
プロジェクト開発においては、通常環境管理が必要であり、PM 2はプロファイルとコマンドラインパラメータを使用して環境を設定することができる.
プロファイルの追加
まず、
pm2 init
コマンドを使用して、デフォルトの構成がすでに存在するecosystem.config.js
ファイルを作成します.module.exports = {
apps : [{
name: 'API',
script: 'app.js',
// Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
args: 'one two',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}],
deploy : {
production : {
user : 'node',
host : '212.83.163.1',
ref : 'origin/master',
repo : '[email protected]:repo.git',
path : '/var/www/production',
'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'
}
}
};
構成の変更
環境管理に役立つものは次のとおりです.
{
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}
デルのプロジェクトに合わせて、構成を次のように変更できます.
{
env: {
NODE_ENV: 'dev'
},
env_development: {
NODE_ENV: 'dev'
},
env_production: {
NODE_ENV: 'prod'
}
}
起動コマンドは次のとおりです.
pm2 start ecosystem.config.js --watch --env
pm2 start ecosystem.config.js --watch --env development
pm2 start ecosystem.config.js --watch --env production
開発環境の開始
サービス側のコードでは、
process.env.NODE_ENV
で設定された値を取得できます.たとえば、
pm2 start ecosystem.config.js --watch --env development
コマンドを使用してプロジェクトを開始すると、process.env.NODE_ENV
の値が`devに印刷されます.サンプルコード:/lesson 29/config/index.js
const process = require('process')
console.log(process.env.NODE_ENV) // dev
mode = process.env.NODE_ENV // dev
ログ管理
PM 2は非常に強力なログ管理機能を提供し、様々な方法でログを表示することをサポートしています.
# server
pm2 logs server --format
結果は、timestamp=2019-04-10-23:13:25+0800 app=server id=0 type=out message=dev
timestamp=2019-04-10-23:13:26+0800 app=server id=0 type=out message=Server started at 8080
pm2 logs server --json
結果は、{"timestamp":"2019-04-10T15:14:52.376Z","type":"process_event","status":"exit","app_name":"server"}
{"timestamp":"2019-04-10T15:14:52.479Z","type":"process_event","status":"exit","app_name":"server"}
{"message":"dev","timestamp":"2019-04-10T15:14:53.246Z","type":"out","process_id":0,"app_name":"server"}
{"timestamp":"2019-04-10T15:14:53.284Z","type":"process_event","status":"online","app_name":"server"}
{"message":"Server started at 8080","timestamp":"2019-04-10T15:14:53.474Z","type":"out","process_id":0,"app_name":"server"}
pm2 logs server --lines 3
を表示すると、[TAILING] Tailing last 3 lines for [server] process (change the value with --lines option)
C:\xxx\.pm2\logs\server-error.log last 3 lines:
0|server | code: 'ETIMEDOUT',
0|server | syscall: 'connect',
0|server | fatal: true }
C:\xxx\.pm2\logs\server-out.log last 3 lines:
0|server | Server started at 8080
0|server | dev
0|server | Server started at 8080
CLIリファレンス
上記のコマンド以外にも、PM 2には他にも多くの実用的なコマンドがありますが、ここでは一つ一つ挙げず、必要に応じてドキュメントを表示できます.