PM2管理任意类型进程的方式

PM2是Node的一个第三方库,也是一个优秀的进程管理软件。它具有资源监控、自动重启、集群等使用功能。Node服务实例通常使用PM2管理。
实际上PM2同样可以管理其他程序,如Python、Go等。
如果设置PM2的解释器为bash,就可以管理任意程序。

方案

这里以服务器Gunicorn为例。

pm2可以通过配置文件启动(pm2 start pm2-config.json)。其中可以设置exec_interpreterscriptargs,配置这几个参数就可以启动大部分应用。
但是仍有例外。如Gunicorn的启动命令为gunicorn module:app。其中module是Python文件名。由于启动命令中不存在文件路径,上述的script就不能正常设置。

类似这种的应用,可以将其启动命令编写为bash脚本,利用bash启动。(windows下则为cmd和bat)

配置如下:
pm2-config.json:

{
  "apps": [{
    "exec_interpreter": "bash",
    "script": "gunicorn-start.sh",
    "args": []
  }]
}

gunicorn-start.sh:

gunicorn app:app -b 0.0.0.0:10080 -w 16 -k gevent 

缺陷

通过bash脚本启动的实例,pm2可以正常的记录日志和自动重启,但是性能监控会失效(内存恒定为脚本执行消耗)。
像gunicorn这样特殊的应用,自己会管理进程,所以不能使用pm2的cluster模式。

    原文作者:平仄_pingze
    原文地址: https://www.jianshu.com/p/f1084c685e68
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞