不好意思最近问题有点多......
有一个 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 我们以前也遇到过,具体原因不明,我们的场景好像是某些情况下服务器挂了之后会出现这种情况