Gearman gearadmin - 命令行工具 - 清除顽固作业

Gearman gearadmin - command line tool - clearing stubborn jobs

this question here, I've been busy taking over an woefully undocumented gearman setup from a previous dev. Funnily enough, I've never seen such a 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

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

任何人都可以阐明这一点,或者告诉我如何调试这些作业吗?

这是我知道的一个老问题,但以防万一以后其他人有同样的问题...为什么你的最终工作没有明确的答案是有工人 运行 在工作在那些工作上。

状态输出中的三列:

5 4 4

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

因此,当您的 gearman -w > /dev/null 正在消耗工作时,其他 4 个工人锁定了 4 个工作。我猜你剩下 5 的事实可能是竞争条件,当你的流失是 运行.

时,另一个工作人员将一个工作返回到队列中

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