目标机器 Ubuntu 12.04 LTS,不能使用 Systemd。
所以大致就是这么几个选择
主要监视 unicorn(独立运行的 unicorn),需要崩溃时自动重启;以及将来可能用来监视 puppet agent 和 apache,看是不是死锁吃满 CPU 什么的。
你的选择是?以及理由?
upstart 系统自带,无需安装,节省资源,稳定
Rails App Server 进程不需要监视,不会挂,另外 Uncorn Puma 之类的 Master 进程本身有进程保护的。
monit 另外,systemd 和监视有啥关系?
#3 楼 @vkill 姑且也是有一些监视功能的吧,比如崩溃自动重启什么的
用 Foreman 导出配置,系统是 upstart 的时候导出 upstart,是 systemd 的时候导出 systemd。
http://chloerei.com/2014/12/15/foreman/
我倾向于选择系统自带的进程管理器,upstart 或者 systemd,优点:
缺点正如 @rei 的文章中提到的 Foreman 导出 upstart 配置后的遇到的问题一样。
总之这部分坑很多,没有标准答案,需要根据自己对系统的理解以及项目的需要灵活搭配调整。
一直用的是 CentOS puma 交给自身的 master 管理,没问题。内存占用过大了,直接 kill 了 worker 就重启了。 后台跑的 sleep 的 rake 任务用 god,最大的问题是 stop 的时候停不掉。目前是手工关掉 god 然后再 kill 掉进程。 supervised 搞不定 rvm 环境初始化,放弃了。monit 没搞明白,预感会遇到 rvm 环境问题,放弃,用 god 了。
核心服务都用默认的或者不用(如上面说的本身自带进程保护),小脚本程序用了 eye(类似 god,用下来感觉更简单好用耗资源)。
@nine https://github.com/seuros/capistrano-puma/blob/master/lib/capistrano/templates/puma_monit.conf.erb#L6 不会有 rvm 的问题
#9 楼 @vkill 3x