Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8952

pm2のプロファイリングを試してみる(前準備)

$
0
0

あけましておめでとうございます。
この記事を編集していたら年を越していました。

EC2を作成

keyvalue
インスタンスタイプt2.micro
vCPU1

Node.js, pm2をインストール

curl -sL https://rpm.nodesource.com/setup_12.x | bash -
yum install nodejs -y
node -v
> v12.20.0
npm -v
> 6.14.8
npm install pm2 -g
> 4.5.1

pm2の設定

# 再帰的にディレクトリを作成する
mkdir -p /var/www/test
# pm2の設定ファイルを作成
touch pm2.yaml
# pm2の設定ファイルを編集
vi pm2.yaml
pm2.yaml
apps:-script   :./app.jsname     :'tes-app'instances:-1# cpuの数-1のプロセスを起動。(clusterモードに限る)# instances: 0 # cpuの数に応じて最大のプロセスを起動。(clusterモードに限る)exec_mode:cluster# n個のインスタンスを起動し、クラスターモジュールに負荷分散を処理させます。

PM2 - Cluster Mode

コア数、環境もによりますが、instances: -1がよさそうです。(コア数8なら7プロセス起動)(脳死でMaxはNG)
またt2.microは1コアのはずですが、instances: 4にするとプロセスが4つ起動しました。(どういう状態?)

参考: Optimising NginX, Node.JS and networking for heavy workloads - GoSquared Blog

Expressの準備

# expressをインストール(4.17.1: 2020/12/30)
npm install express

Node.js アプリケーションの簡単なプロファイリング | Node.js

app.js
constexpress=require("express");constapp=express();server=app.listen(3000,function(){console.log("Node.js is listening to PORT:"+server.address().port);});app.get('/newUser',(req,res)=>{letusername=req.query.username||'';constpassword=req.query.password||'';username=username.replace(/[!@#$%^&*]/g,'');if(!username||!password||users.username){returnres.sendStatus(400);}constsalt=crypto.randomBytes(128).toString('base64');consthash=crypto.pbkdf2Sync(password,salt,10000,512,'sha512');users[username]={salt,hash};res.sendStatus(200);});

pm2を起動

pm2 start pm2.yaml 
[PM2][WARN] Applications test-app not running, starting...
[PM2] App [test-app] launched (1 instances)
┌─────┬─────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name        │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼─────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ test-app    │ default     │ 1.0.0   │ cluster │ 24606    │ 0s     │ 0    │ online    │ 0%       │ 30.1mb   │ root     │ disabled │
└─────┴─────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

設定を変更したい場合は一度レジストリを削除してから再度スタートします。(restartだと変更した設定は反映されない)

pm2 delete test-app
pm2 start pm2.yaml 

今回はここまで。


Viewing all articles
Browse latest Browse all 8952