iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
1
自我挑戰組

工作雜記隨筆系列 第 21

Day 21. 使用pm2管理伺服器

  • 分享至 

  • xImage
  •  

pm2的操作

  1. 安裝PM2
npm install pm2 -g
  1. 啟動服務
pm2 start app.js
  1. 啟動N個名為SERVICE_NAME的服務的進程
pm2 start app.js -i N --name SERVICE_NAME
  1. 重啟服務
npm restart SERVICE_NAME
  1. 設定記憶體使用超過多少後自動重啟伺服器
pm2 start app.js --max_memory_restart 1024M
  1. 監控服務
pm2 monit

查看服務進程數

  1. 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id" | sort| uniq | wc -l
  1. 查看每個物理CPU中的核數
cat /proc/cpuinfo| grep "cpu cores"| uniq
  1. 查看邏輯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 start Or Restart /file/path/ecosystem.json : 通過配置文件啟動服務

下面是開發時ecosystem.json的內容:
採用cluster模式啟動了4個服務進程;如果服務佔用的內存超過300M,會自動進行重啟。

{
    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"
            }
        }
    ]
 }

更多相關知識請見官網: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


上一篇
Day 20. 查看某個Linux裡服務的狀態
下一篇
Day 22. nginx-基礎設定教學
系列文
工作雜記隨筆30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言