业务中使用pm2来管理MQ的消费者(需常驻),使用pm2有个好处就是,如果进程意外退出了,pm2可以将它自动重启。下面介绍常见的使用方法:新增、删除、修改。
一、新增一个常驻进程
1.1 先创建一个json配置文件,比如:
{
/**
* docs: http://pm2.keymetrics.io/docs/usage/application-declaration/#attributes-available
*/
name: "cront/Trade/deliveyNotice",
args: "cront/Trade/deliveyNotice",
script: "/opt/ci123/www/html/api_shop/webroot/index.php",
exec_interpreter: "/opt/ci123/php/bin/php",
exec_mode: "fork",
max_memory_restart: "100M",
out_file: "/tmp/api_shop/Delivery.log",
error_file: "/tmp/api_shop/Delivery.log",
instances: 1
}
我们使用代码位置(cront/Trade/deliveyNotice)作为name,方便管理。args是在执行script时加在其后面的参数。
1.2 启动脚本
pm2 start /path/to/your/config.json
start
后接上一步写的json配置文件。
二、删除常驻进程
2.1 首先找到我们要删除/关闭的进程在pm2里的id是多少。
// e.g. pm2 list|grep cront/Trade/deliveyNotice
pm2 list|grep xxx
pm2 list
可以查看所有pm2管理的进程,我们根据关键字把需要删除的进程筛选出来,找到id。
2.2 从pm2中删除进程
pm2 delete id
id
是上一步找到的进程id(进程在pm2中的id,不是pid)。
三、修改常驻进程,并重启
pm2有restart和reload命令。
一般认为restart的意思是先关闭旧进程,再重启一个新的进程。
而reload的意思是先重启一个新的进程,再关闭旧进程。
pm2 restart /path/to/your/config.json
#或者
pm2 reload /path/to/your/config.json
restart和reload都不能真正实现进程的平滑重启。只有将消费进程改造后,才可以实现平滑重启。
四、其他
4.1 pm2也支持将所有config写在一个json文件里;
4.2 使用pm2管理常驻进程的初衷,是想借助pm2的进程重启功能;其他一些工具比如supervisor也有类似功能。
4.3 pm2管理非node进程时,只能使用fork模式,不能使用cluster模式;
4.4 官方对配置文件的说明: Process File;