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"
},
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 遇到进程崩溃,会自动重启(如下图)
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"
},
文件中被写入日志:
11.5 多进程
单个进程内存受限,操作系统会限制进程的最大可用内存。
- 操作系统限制一个进程的内存
- 内存:无法充分利用机器全部内存
- CPU:无法充分利用多核CPU的优势
package.json
添加"instances": 4,