新手问题 Sidekiq 同时执行两个任务时总有一个失败

karrra · 2015年12月25日 · 最后由 michael0015 回复于 2015年12月25日 · 1924 次阅读

不好意思最近问题有点多......

有一个 worker 放在 after_commit 创建时执行,然后因为需求原因大部分时候都是同时创建两个对象,所以也需要同时执行两次 worker,然而查看日志发现每次都是执行了后一个对象的 worker,另外一个就直接 failed 了,有跟同事讨论过怀疑是 sidekiq 并发的问题,可是不知道怎么调试比较好,改成 perform_in 延迟也是一样

failed 原因是什么?是执行 perform 的时候抛了 exception?还是说任务直接就失败了?你这么描述无从判断啊

#1 楼 @alucardpj 日志没抛错.....要是知道原因我也好排查,而且本地开发环境是没问题的....

#2 楼 @karrra 在 worker 里加入调试日志方便判断是哪一步出错

#3 楼 @michael0015 加了日志才发现另一个根本就没执行 worker 代码

#4 楼 @karrra 找找原因为什么没执行吧

最后在 stackoverflow 上面找到相似情况,ps aux | grep sidekiq 的时候有两个进程,全杀掉然后重启 sidekiq 就好了,不过不知道具体原因,哪位大神可以指教一下?

#6 楼 @karrra 我们以前也遇到过,具体原因不明,我们的场景好像是某些情况下服务器挂了之后会出现这种情况

需要 登录 后方可回复, 如果你还没有账号请 注册新账号