pm2的操作
1. 安裝PM2npm install pm2 -g
2. 啟動服務pm2 start app.js
3. 啟動N個名為SERVICE_NAME的服務的進程pm2 start app.js -i N --name SERVICE_NAME
4. 重啟服務npm restart SERVICE_NAME
5. 設定記憶體使用超過多少後自動重啟伺服器pm2 start app.js --max_memory_restart 1024M
6. 監控服務pm2 monit
查看服務進程數
1. 查看物理CPU个数cat /proc/cpuinfo| grep "physical id" | sort| uniq | wc -l
2. 查看每個物理CPU中的核數cat /proc/cpuinfo| grep "cpu cores"| uniq
3. 查看邏輯CPU的個數cat /proc/cpuinfo| grep "processor"| wc -l
確認是否使用nginx
nginx的主要功能如下
- 反向代理,實現簡單的負載均衡: 如果有多台服務器或者一台服務器多個端口,可以考慮用nginx。
- 靜態資源緩存:把一些靜態資源(如靜態頁面,js等資源文件)放到nginx裡,可以極大的提高服務的性能。
日誌問題
日誌系統對於任意應用而言,通常都是必不可少的一個輔助功能。pm2的相關文件默認存放於$HOME/.pm2/
目錄下,其日誌主要有兩類:
- pm2自身的日誌,存放於$HOME/.pm2/pm2.log;
- pm2所管理的應用的日誌,存放於$HOME/.pm2/logs/目錄下,標準誰出日誌存放於${APP_NAME}_out.log,標準錯誤日誌存放於${APP_NAME}_error.log;
pm2支持配置文件啟動
pm2 ecosystem:生成配置文件ecosystem.json
pm2 startOrRestart /file/path/ecosystem.json :通過配置文件啟動服務
如下是開發時ecosystem.json的內容:
{
apps : [
{
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個服務進程;如果服務佔用的內存超過300M,會自動進行重啟。
更多相關知識請見官網:ecosystem-file
支援自動化部署
一個簡單的process.json範例
{
"apps" : [{
"name" : "HTTP-API",
"script" : "http.js"
}],
"deploy" : {
// "production" is the environment name
"production" : {
"user" : "ubuntu",
"host" : ["192.168.0.13"],
"ref" : "origin/master",
"repo" : "git@github.com:Username/repository.git",
"path" : "/var/www/my-repository",
"post-deploy" : "npm install; grunt dist"
},
}
}
/bin/bash:
# Setup deployment at remote location
$ pm2 deploy production setup
# Update remote version
$ pm2 deploy production update
# Revert to -1 deployment
$ pm2 deploy production revert 1
# execute command on remote machines
$ pm2 deploy production exec "pm2 reload all"
更多介紹請見官網:simple-deploy