新手问题 sidekiq 进入了任务队列,但不执行任务!😭

activeliang1 · 2019年05月20日 · 最后由 Terry.Shi 回复于 2019年05月22日 · 2376 次阅读

问题描述:

用 sidekiq 执行 active job 任务,出现不执行的现象:
  • sidekiq 显示『已进入队列』但不执行,如下图:

image-20190518094003222

  • 平时是正常工作的 但时不时会这样卡住,任务里没有很耗时的工作。

  • 服务器端ps aux | grep sidekiq返回结果:

deploy    2084  0.0  0.0  14224  1084 pts/0    S+   09:35   0:00 grep --color=auto sidekiq
  • Active job 里的queue_as和 sidekiq 的queue_name均为default

  • 记忆中,从服务器 ubuntu16.04 配置 redis 多端口 添加了 6380 端口后,sidekiq 就出现这种状况了!

以上,已经不知道如何着手 debug,求助

😭

以前碰到过网络请求重定向的时候卡住的情况 你可以打印可能耗时的操作的耗用时间 先定位问题

BruceDing 回复

检查过,没有耗时的任务。 而且,并没有任务被执行。只是进入了任务队列,然后就没有然后了,没有被执行。

重启 sidekiq 重启 redis 试试

你的 sidekiq 已经挂了,根本没有进程啊...这个进入队列只是等待执行,你的 sidekiq 进程已经没了。

应该是你的 sidekiq 会时不时挂掉,要查一下这个原因,并不是进入队列不执行。

你没有启动 sidekiq 进程啊

本地的话需要开启 sidekiq .bundle exec sidekiq

skidekiq 两个 一个 client, 一个 server, 可能 server 挂了

ps aux | grep sidekiq 出来的结果,根本没有 sidekiq 的进程啊

deploy    2084  0.0  0.0  14224  1084 pts/0    S+   09:35   0:00 grep --color=auto sidekiq
# 这个是 grep 的进程

bundle exec sidekiq +1

你点执行中,看有没有 worker

谢谢各位,已解决

原因:sidekiq 进程挂掉了,因为每天凌晨会有一个非常耗内存的 crontab,导致内存不足被 kill

解决方法:通过这篇教程 Ubuntu 16.04 建立 Swap file & 調校 swap ,解决因临时非常耗内存而被 kill 的情况!

@lithium4010 @OrderSun @yukihiro_matz @gwq @dreamable @tesla_lee @BruceDing

activeliang1 回复

可以使用 monit 监控 sidekiq,挂了可以重启

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