解析beantools针对beanstalkd tube的tail命令输出及异常问题
beantools tail命令输出字段说明及重复记录原因解答
核心字段定义
你提到的三个字段具体含义如下:
- age:该Job从创建时刻到当前的总存活时长,单位为秒,只要Job未被永久删除(delete),该数值会持续递增。
- reserves:该Job被消费者执行
reserve(预留,即消费者获取Job处理权的操作)的累计次数,每次成功预留该数值+1。 - releases:该Job被消费者执行
release(释放,即消费者主动将Job放回队列等待重新调度的操作)的累计次数,每次成功释放该数值+1。
同ID重复输出原因
你观察到的stat查询仅返回1个Job、但tail输出数千条相同ID记录的现象,和你给出的输出示例里的数值完全吻合:
示例输出:
id: 1, length: 184, priority: 1024, delay: 0, age: 45, ttr: 60 reserves: 101414, releases: 101413, buries: 0, kicks: 0, timeouts: 0 body:{snip}
这个ID为1的Job被消费者重复预留了101414次,又被释放了101413次,相当于消费者每次拿到这个Job后都没有处理完成并执行删除操作,而是重新放回了队列进入下一轮调度。beantools的tail命令会监听队列内所有Job的状态变更事件,每次这个Job的状态发生变化(被预留/被释放)都会输出一条新的记录,因此你会看到数千条ID相同的输出,实际上队列中始终只有这一个正在循环调度的Job。
内容的提问来源于stack exchange,提问作者caw
相关产品推荐
相关产品推荐

