来自其他主机的Resque Workers在我的系统上注册并处于活动状态

时间:2012-12-24 06:49:51

标签: ruby-on-rails-3 amazon-web-services amazon-ec2 redis resque

我目前正在处理的Rails应用程序托管在Amazon EC2服务器上。它使用Resque来运行后台作业,并且有2个这样的实例(可能是生产和阶段)。此外,我已将Resque监控Web应用程序安装到/ resque路由(仅限于舞台上)。

这是我的问题: 为什么在我的舞台系统中注册了多个主机的工作人员,我该如何避免这种情况?

一些额外的细节: 我看到显然是3台不同机器的工人,但只有2台我设法识别 - 阶段(显然)和生产。第三种是另一种地址格式(以domU开头)并且没有任何线索可能是什么。

foreign resque workers

2 个答案:

答案 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}

这应该修剪所有不真实的工人,并让你回到真实工人的正确展示。