我有一个在nginx下运行的三个mongrel集群,我使用Capistrano 2.4.3部署应用程序.当我有一个正在运行的系统时"封盖部署",行为是:
该应用程序已部署.代码已成功更新.
在cap deploy输出中,有这样的:
执行"sudo -p"sudo密码:'mongrel_rails cluster :: restart -C /var/www/rails/myapp/current/config/mongrel_cluster.yml"
服务器:["myip"]
[myip]执行命令
**[out :: myip]停止端口9096
**[out :: myip]停止端口9097
**[out :: myip]停止端口9098
**[out :: myip]已经启动了端口9096
**[out :: myip]已经启动了端口9097
**[out :: myip]已经启动了端口9098
我立即检查服务器并发现Mongrel仍在运行,并且前三个实例的PID文件仍然存在.
不久之后(不到一分钟),我发现Mongrel不再运行,PID文件消失,无法重启.
如果我手动启动服务器上的mongrel,应用程序启动就好了.
在尝试重新启动集群之前,似乎'mongrel_rails cluster :: restart'没有正确等待完全停止.如何诊断和解决此问题?
编辑:这是答案:
mongrel_cluster,在"重启"任务中,只需执行以下操作:
def run stop start end
在调用"start"之前,它不会等待或检查进程是否已退出.这是一个已知错误,提交了一个未完成的补丁.我将补丁应用于Mongrel Cluster,问题就消失了.