1

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

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

一些额外的细节:我看到来自 3 台不同机器的工人,但我设法识别出其中的 2 台——舞台(显然)和生产。第三个有另一种地址格式(以 domU 开头)并且不知道它可能是什么。

外国工人

4

2 回答 2

0

看起来您正在跨多个 resque 服务器环境共享单个 Redis 服务器。

安全地执行此操作的最佳方法是使用单独的 Redis 服务器或单独的 Redis 数据库或命名空间。Redis-namespace gem 可以与 Resque 一起使用,以隔离每个环境 Resque 队列和工作数据。

于 2012-12-29T17:13:49.753 回答
0

我无法真正帮助您了解未知的内容,但是在移动主机和更改 dns 名称时发生了类似的事情。我发现清除旧的唯一方法是停止机器上的所有工作人员,启动 IRB,require 'resque'然后查看Resque.workers. 这将列出 resque 知道的所有工作人员,在您的情况下将包括大约 20 个虚假工作人员。然后你可以这样做:

Resque.workers.each do {|worker| worker.unregister_worker}

这应该会修剪所有不存在的工人,并让您重新正确展示真正的工人。

于 2013-02-09T01:43:12.690 回答