当前位置:网站首页>nodejs 个人学习笔记(imook)pm2

nodejs 个人学习笔记(imook)pm2

2020-11-10 10:44:00 米姐胡扯扯

11.1 pm2

线上环境:

  • 服务器稳定性(用户不管怎么操作,服务都不能挂,出了错,也不能影响其他功能的使用)
  • 充分利用服务器硬件资源,以便提高性能 (充分利用服务器的硬件资源)
  • 线上日志记录(自定义日志操作日志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.png

11.5 多进程

单个进程内存受限,操作系统会限制进程的最大可用内存。

  • 操作系统限制一个进程的内存
  • 内存:无法充分利用机器全部内存
  • CPU:无法充分利用多核CPU的优势
    package.json 添加 "instances": 4,

    image.png

版权声明
本文为[米姐胡扯扯]所创,转载请带上原文链接,感谢
https://segmentfault.com/a/1190000037781694