pm2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控,自动重启,负载均衡等。
安装
npm install -g pm2
常用命令
启动
–watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听,不监听的目录。通过配置文件
-i --instance:启用多少个实例,可用于负载均衡。如果-i 0 或者 -i max,则根据当前机器核数确定实例数
–ignor-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则,–ignore-watch=“test node_modules ‘some scripts’”
-n --name:应用的名称,查看应用信息的时候可以用到。
-o --output :标准输出日志文件的路径
-e --error :错误输出日志文件的路径
–interpreter :
pm2 start app.js --watch -i 2;
查看进程状态
pm list
查看某个进程的状态
pm2 describe id|name
重启
pm2 restart app.js
停止
停止单个需要通过指定进程的name或者id。所以先通过 pm2 list 获取进程数据。然后执行停止
pm2 stop name|id // 停止单个 pm2 stop all // 停止所有
删除
和停止一样,删除单个也需要获取进程name/id
pm2 del name|id // 删除单个 pm2 del all // 删除所有
配置文件
配置文件的设置项和命令行的参数基本上是一样的。
可以选择yaml|json文件
json格式的配置文件会被pm2当成普通的js文件来处理,所以可以在里面添加注释或者编写代码,这样有助于动态调整配置
如果启动的时候制定了配置文件,那么部分命令行参数会被忽略
{ "name" : "fis-receiver", // 应用名称 "script" : "./bin/www", // 实际启动脚本 "cwd" : "./", // 当前工作路径 "watch": [ // 监控变化的目录,一旦变化,自动重启 "bin", "routers" ], "ignore_watch" : [ // 从监控目录中排除 "node_modules", "logs", "public" ], "watch_options": { "followSymlinks": false }, "error_file" : "./logs/app-err.log", // 错误日志路径 "out_file" : "./logs/app-out.log", // 普通日志路径 "env": { "NODE_ENV": "production" // 环境参数,当前指定为生产环境 } }
多环境切换
在配置文件中通过env_xx来声明不同环境的配置,然后在启动的时候通过–env参数指定运行的环境
env为默认的环境配置(生产环境),env_dev(开发环境),env_test(测试环境)
不同环境下的NODE_ENV,REMOTE_ADDR字段的值是不同的。
在应用中,可以通过process.env,REMOTE_ADDR等来读取配置中声明的变量。
"env": { "NODE_ENV": "production", "REMOTE_ADDR": "http://www.example.com/" }, "env_dev": { "NODE_ENV": "development", "REMOTE_ADDR": "http://www.example.dev.com/" }, "env_test": { "NODE_ENV": "test", "REMOTE_ADDR": "http://www.example.test.com/" }
// 启动的时候指定环境启动
pm2 start app.js --env dev
负载均衡
pm2 start app.js -i 0 // 根据机器当前的核数,自动开始尽可能多的进程
pm2 start app.js -i 3 // 开启三个进程
pm2 start app.js -i mmax // 根据机器的cpu核数,开启对应数目的进程
1
2
3
日志查看
pm2 logs
1
监控
通过数据大盘查看pm2运行进程的状态
pm2 monit
内存超过上限自动重启
设置内存上限,并且内存达到上限之后自动重启
pm2 start big-array.js --max-memory-restart 20M;
1
pm2 --help功能
指令自动补全
pm2 completion install source ~/.bash_profile
开机自动重启
首先通过pm save保存当前的状态
通过pm2 startup [platform]生成开机自启动的命令
将步骤2生成的命令,粘贴到控制台运行
pm2 + nginx反向代理配置
upstream test { server 127.0.0.1:3001; } server { listen 80; server_name my_nodejs_server; root /home/www/project_root; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_pass http://test; proxy_redirect off; proxy_read_timeout 240s; } }
参考地址
pm2远程部署:https://pm2.keymetrics.io/docs/usage/deployment/#getting-started
pm2API:https://pm2.keymetrics.io/docs/usage/pm2-api/
pm2在线监控系统:https://id.keymetrics.io/api/oauth/login
扫一扫关注微信公众号
扫一扫访问手机站
扫一扫微信小程序
扫一扫百度小程序