在Linux系统下,经常会遇到一些小软件本身是无法在后台运行的,通常的做法借助其他工具,例如nohup,
nohup node app.js >> output.log 2>&1 &
更高级的有进程管理工具supervisord,或者包装成系统Service,亦或者用Docker等多种方案,但,各有利弊,使用起来,差强人意。
其中最方便的是nohup
,使用过程中发现它最大的问题是经常莫名的自动崩溃,需要再次进入系统手工启动。
其他几种方案显得笨重,本来我就是希望启动一个小工具而已,上来一堆配置,就让人崩溃。。。
一直以来除了迁就nohup,有没有更好的方案呢?
这两天部署一个node应用,发现其生态有几个不错的后台服务管理工具,PM2就是其中之一,一见钟情,其他的就直接不想看了。
这个工具除了依赖Node,可以说没有其他缺点了,功能无比强大,最重要的是使用起来也同样简单无比。
PM2主要的功能包括后台服务启动、管理(list、delete等)、集群(多实例负载)、监控等,强的一笔,下面简单感受一下,
1,启动一个服务
如果你是一个node应用,直接 pm2 start xxx.js
就启动了,你要高可用?没问题,
pm2 start app.js -i 4
,启动4个实例,或者等同于CPU数量 pm2 start app.js -i max
,请求会在这几个实例上做均衡,如图:
如果你是一个普通的应用(非Node),启动的方式:pm2 start -x command
。
2,常用命令
1,管理
# 查看所有启动的应用,如下图
pm2 ls
# 删除某应用
pm2 delete app
# 停止某应用
pm2 stop app
# 启动某应用
pm2 start app
# 重启某应用,其实就是执行了stop和start
pm2 restart app
2,监控 pm2 monit
可以看到每个应用CPU、内存、日志、吞吐量等,这个可视化的UI,体验很好。。