我目前正在处理的Rails应用程序托管在Amazon EC2服务器上。它使用Resque来运行后台作业,并且有2个这样的实例(可能是生产和阶段)。此外,我已将Resque监控Web应用程序安装到/ resque路由(仅限于舞台上)。
这是我的问题: 为什么在我的舞台系统中注册了多个主机的工作人员,我该如何避免这种情况?
一些额外的细节: 我看到显然是3台不同机器的工人,但只有2台我设法识别 - 阶段(显然)和生产。第三种是另一种地址格式(以domU开头)并且没有任何线索可能是什么。
答案 0 :(得分:0)
您似乎在多个resque服务器环境中共享一台Redis服务器。
安全地执行此操作的最佳方法是使用单独的Redis服务器或单独的Redis数据库或命名空间。 Redis-namespace gem可以与Resque一起使用,以隔离每个环境Resque队列和工作人员数据。
答案 1 :(得分:0)
我无法真正帮助你解决未知的问题,但是当移动主机并让dns名称发生变化时,我发生了类似的事情。我发现清除旧机器的唯一方法是停止机器上的所有工作人员,启动IRB,require 'resque'
并查看Resque.workers
。这将列出所有工作人员resque知道的内容,在您的情况下将包括大约20个虚假的工作人员。然后你可以这样做:
Resque.workers.each do {|worker| worker.unregister_worker}
这应该修剪所有不真实的工人,并让你回到真实工人的正确展示。