pm2
Posted wzndkj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pm2相关的知识,希望对你有一定的参考价值。
1、下载安装
npm install pm2 -g
pm2 --version
2、基本使用
"prd": "cross-env NODE_ENV=production pm2 start index.js"
执行npm run prd。执行完之后如图
第一个特点是程序已经起来了,第二个是不会占用终端。控制台已经交还给我们,可以用了。
输出一个表,名字是启动的js名字,id是当前列表标示,后面版本,mem内存占了11.7M,现在只有一个list
可以通过pm2 list看到当前列表
3、常用命令
pm2 start 后面可以跟要启动的js,也可以跟配置文件
pm2 list 看到pm2的进程列表
pm2 restart <AppName>/<id> 后面接app name或者id,这个就是列表里面的Name和id
pm2 stop <AppName>/<id> 停止某个进程,还可以重新启动起来
pm2 delete <AppName>/<id> 删除某个进程,删除之后就没了,跟stop有区别
pm2 info <AppName>/<id> 查看基本信息
pm2 log <AppName>/<id> 查看日志,打印处理
pm2 monit <AppName>/<id> 监控到进程的cpu和信息
pm2进程守护
用node app.js或者nodemon app.js, 进程崩溃则不能访问
pm2遇到进程奔溃,会自动重启。这是pm2最核心的价值之一
为何使用多进程
1、操作系统会限制一个进程的最大可用内存。单个进程内存受限
2、如果只有一个进程,无法充分利用机器的全部内存
3、如果只有一个进程,无法充分利用多核cpu的优势
多进程和redis
使用多进程会带来一个问题,就是多个进程,内存是无法共享的。所以通过共享redis,实现数据共享
pm2配置和日志记录
pm2.conf.json
"apps": // 这个写完之后再去运行,这个名字会显示在Name列 "name": "pm2-test-server", // 启动的文件,如果是koa2,要写成bin/www "script": "index.js", // 监听文件变化,自动重启,这里的true or false取决于自己的判断,比如代码发布后,是否要自动重启,一般是false "watch": true, // 文件变化自动重启,有哪些是不需要监听的 "ignore_watch": [ "node_modules", "logs" ], // 设置多进程的 "instances": 4, // 错误日志放在logs/err.log文件下 "error_file": "logs/err.log", // console.log打印的放在logs/out.log文件下 "out_file": "logs/out.log", // 日志每一行都要标志一个时间 "log_date_format": "YYYY-MM-DD HH:mm:ss"
然后package的启动方式改成
"prd": "cross-env NODE_ENV=production pm2 start pm2.conf.json",
以上是关于pm2的主要内容,如果未能解决你的问题,请参考以下文章