nodejs 我的學習筆記(imook)pm2

11.1 pm2

線上環境:node

  • 服務器穩定性(用戶無論怎麼操做,服務都不能掛,出了錯,也不能影響其餘功能的使用)
  • 充分利用服務器硬件資源,以便提升性能 (充分利用服務器的硬件資源)
  • 線上日誌記錄(自定義日誌操做日誌access-log訪問日誌

PM2 進程守護

  • 系統崩潰自動重啓
  • 多進程,充分利用資源
  • 自帶日誌記錄功能
// package.json
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "cross-env NODE_ENV=dev nodemon app.js",
    "prd": "cross-env NODE_ENV=production pm2 start app.js"
  },

image.png

11.2 經常使用命令

pm2 start
pm2 list
pm2 restart name/id //  上圖爲例:pm2 restart 1 
pm2 stop/delete 1
pm2 info 1
pm2 log 1
pm2 monit 1

11.3 進程守護

  • node app.js 和nodemon app.js 進程崩潰,不能訪問
  • pm2 遇到進程崩潰,會自動重啓(以下圖)

image.png

11.4 配置項

  • 新建PM2配置文件(包括進程數量,日誌文件目錄等)
  • 修改PM2 啓動命令,重啓
  • 訪問server,檢查日誌文件的內容(日誌記錄是否生效)
{
    "apps": {
        "name": "pm2-test-server",
        "script": "app.js",
        "watch": true,
        "ignore_watch": [
            "node_modules",
            "logs"
        ],
        "error_file": "logs/err.log",
        "out_file": "logs/out.log",
        "log_date_format": "YYYY-MM-DD HH:mm:ss" // 每條日誌加一個時間戳
    }
}
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "cross-env NODE_ENV=dev nodemon app.js",
    "prd": "cross-env NODE_ENV=production pm2 start pm2.config.json"
  },

文件中被寫入日誌?:
image.pngjson

11.5 多進程

單個進程內存受限,操做系統會限制進程的最大可用內存。服務器

  • 操做系統限制一個進程的內存
  • 內存:沒法充分利用機器所有內存
  • CPU:沒法充分利用多核CPU的優點
    package.json 添加 "instances": 4,

    image.png

相關文章
相關標籤/搜索