【问题标题】:Gearman gearadmin - command line tool - clearing stubborn jobsGearman gearadmin - 命令行工具 - 清除顽固的工作
【发布时间】:2020-01-26 22:28:38
【问题描述】:

this question here 的帮助下,我一直忙于从以前的开发人员那里接手一个可悲的无证齿轮人设置。有趣的是,我也从未见过这样的woefully poor excuse for documentation as the gearman official website,所以我花了一些时间为 repo 编写自己的代码。

无论如何,我做得很好,因为我坚持不懈,所以一切都很好,除了我的暂存站点,由于作业卡住,它无法加载内存缓存,因此无法使用。

继续监控,我运行:

 gearadmin  --status | sort -n | column -t

生产工人表演

0 0 26

全部完成,太好了!

在登台时,我留下了

2550 0 0

...基本上每个产品都失败了。

所以我跑了

/usr/bin/gearman -t 1000 -n -w -f what_i_need_to_clear  > /dev/null

这似乎清除了作业队列。哈哈。几乎。现在我有

5 4 4

如何清除这些?因为工作只是支持它。我只想将我的登台重置为

0 0 0

我正在使用 PHP/MySQL/Sphinx/Memcache 的联合表设置

谁能对此有所了解,或者告诉我如何调试这些作业?

【问题讨论】:

  • gearman 是否配置为持久存储(由数据库中的 queue 表支持)?
  • 嗨,克里斯,感谢您的参与。是的。它也是一个空表,目前生产作业一直在运行并正常完成。
  • 好的,当你遇到卡住的作业并且它们正在备份时,你必须从queue表中删除相应的条目,然后重新启动gearman服务器进程。这将永远清除工作,他们不应该回来。

标签: php memcached sphinx gearman


【解决方案1】:

这是我知道的一个老问题,但万一其他人将来也有同样的问题......为什么你的最终工作没有明确的答案是有工人正在运行,而这些工作正在从事这些工作。

状态输出中的三列:

5 4 4

这意味着队列中有 5 个作业,正在处理 4 个作业,有 4 个工作人员可用。

因此,当您的 gearman -w > /dev/null 正在消耗工作时,另外 4 个工作人员锁定了 4 个工作。我猜你剩下 5 的事实可能是一个竞争条件,当你的排水管运行时,一个工作被另一个工人返回到队列中。

您可以通过在排空队列时停止其他工作人员来避免这种情况,或者像 Kris 在 cmets 中所说的那样,停止 gearmand,清除持久存储并重新启动 gearmand。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 2019-01-30
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多