加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何检查Resque工作人员状态以确定它是否死亡

发布时间:2020-12-16 20:23:17 所属栏目:百科 来源:网络整理
导读:默认的resque web界面说我有7个工作中的5个工作.我不明白这是怎么回事. 我是英雄,所以当我的电动势重启时,它应该旋转现有的动力和工人,然后旋转新的.所以,我假设这些工人中有一些是陈旧的,但是他们认为有更多的工作人员比那里应该有更多的工作(应该只有1个)
默认的resque web界面说我有7个工作中的5个工作.我不明白这是怎么回事.

我是英雄,所以当我的电动势重启时,它应该旋转现有的动力和工人,然后旋转新的.所以,我假设这些工人中有一些是陈旧的,但是他们认为有更多的工作人员比那里应该有更多的工作(应该只有1个)

我如何检查这些是否陈旧或死亡?我期望只有1名工作人员工作.

最终,我希望我会做这个SO帖子的所有内容:How do I clear stuck/stale Resque workers?,但首先我想知道如何确定一个工人是否应该被删除…我不想盲目地注销工人…

道歉,如果这是一个明显的问题.我是新来的

谢谢!

解决方法

确定工作人员实际工作的唯一方法是检查工作人员的主机.在Heroku重新启动后,这台机器不再存在,所以如果工作人员没有注销自己,Resque会相信它仍然工作. Resque工作人员的分散性意味着你不能轻易地检查工人的实际状况.当每个工作人员启动时,它会自动注册redis.当工作人员拿起工作并开始工作时,再次将其注册为redis.当你像这样迭代时:
Resque.workers.each { |w| w.working? }

您正在从redis中提取工人名单,并检查这些工作人员的最后注册状态.它实际上并不查询工作人员本身.

reque-web显示中的主机名将与您在heroku日志输出中看到的名称相匹配,这是查看实际运行的不太好的方式.我希望可以使用从平台API获得的dyno ID自动化,但是它们与主机名不匹配.

确保您正确地处理如this document中指定的Resque :: TermException.您还可以查看其他人已经提出的其中一些可以解决此问题.我有一些问题,即使使用TERM_CHILD和正确的信号处理使得陈旧的工作人员浮动.我的解决方案是等待,直到没有工作被处理,注销所有工作人员,然后重新启动与heroku ps:重新启动工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读