Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 从在我的系统上注册并处于活动状态的其他主机重新创建工作人员_Ruby On Rails 3_Amazon Web Services_Amazon Ec2_Redis_Resque - Fatal编程技术网

Ruby on rails 3 从在我的系统上注册并处于活动状态的其他主机重新创建工作人员

Ruby on rails 3 从在我的系统上注册并处于活动状态的其他主机重新创建工作人员,ruby-on-rails-3,amazon-web-services,amazon-ec2,redis,resque,Ruby On Rails 3,Amazon Web Services,Amazon Ec2,Redis,Resque,我目前正在使用的Rails应用程序托管在AmazonEC2服务器上。它使用Resque来运行后台作业,有两个这样的实例(可能是生产和阶段)。此外,我还将Resque监控web应用程序安装到/Resque路径(仅在舞台上) 我的问题是: 为什么在我的后台系统中注册了来自多个主机的工作人员,我如何避免这种情况 其他一些细节: 我看到工人们显然来自3台不同的机器,但我只找到了其中的两台——舞台(显然)和生产。第三种是另一种地址格式(以domU开头),不知道它可能是什么 看起来您正在跨多个resque服

我目前正在使用的Rails应用程序托管在AmazonEC2服务器上。它使用Resque来运行后台作业,有两个这样的实例(可能是生产和阶段)。此外,我还将Resque监控web应用程序安装到/Resque路径(仅在舞台上)

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

其他一些细节: 我看到工人们显然来自3台不同的机器,但我只找到了其中的两台——舞台(显然)和生产。第三种是另一种地址格式(以domU开头),不知道它可能是什么


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


安全地做到这一点的最佳方法是使用单独的Redis服务器或单独的Redis数据库或名称空间。Redis名称空间gem可以与Resque一起使用,以隔离每个环境Resque队列和工作数据

我真的无法帮你解决未知的问题,但我在移动主机和更改dns名称时也遇到过类似的情况。我发现清除旧机器的唯一方法是停止机器上的所有工人,启动IRB,
要求“重新确认”
并查看
resque.workers
。这将列出resque知道的所有工人,在您的案例中,将包括大约20个伪造的工人。然后,您可以执行以下操作:

Resque.workers.each do {|worker| worker.unregister_worker}
这将删减所有不存在的工作人员,并让您回到真正工作人员的适当展示