0

我面临一个问题,其中 sidekiq 在 docker 中每隔几个小时就会崩溃一次。当 sidekiq 尝试连接到 redis 并且重新启动容器不起作用时,调查日志会显示“TimeoutError”。我能让它再次工作的唯一方法是重新启动 docker 守护进程。

经过大量调查,我认为根本原因与 docker 中的日志记录问题没有跟上 redis 日志有关。我看到的诊断来自这篇文章。他们的解决方案是降级 docker,但似乎 docker 还没有修复到 19.03.3 版本,因此恢复到旧 docker 版本的解决方案是不可行的。

除了降级之外,还有其他可能的解决方法吗?以前有人遇到过这个问题吗?有什么解决方案的建议吗?

4

1 回答 1

0

我正在交叉手指,但我认为我有一个解决方法。

由于问题似乎在日志记录问题上徘徊。对于 sidekiq 尝试连接的 redis 容器,直接的解决方案似乎要么禁用日志记录,要么将日志记录模式设置为“非阻塞”。

我在下面提供了一个示例 docker-compose 文件来解释如何执行此操作:

version: "3.7"
services:
  ruby:
    build: .
    command: rails s
  sidekiq:
    build: .
    command: bundle exec sidekiq
  db:
    image: "postgres:11.1"
  redis:
    image: "redis:4.0"
    logging:
      mode: non-blocking
      # or
      # driver: none

到现在已经有8个小时了。如果这继续顺利运行到明天,那么现在也许这是一个合理的解决方法。

于 2019-10-19T14:14:51.973 回答