【问题标题】:Sidekiq crashes every few hours in dockerSidekiq 在 docker 中每隔几个小时就会崩溃一次
【发布时间】:2023-03-28 11:42:01
【问题描述】:
我遇到了一个问题,即 sidekiq 在 docker 中每隔几个小时就会崩溃一次。当 sidekiq 尝试连接到 redis 并且重新启动容器不起作用时,调查日志会显示“TimeoutError”。我能让它再次工作的唯一方法是重新启动 docker 守护进程。
经过大量调查,我认为根本原因与 docker 中的日志记录问题没有跟上 redis 日志有关。我看到的诊断来自this post。他们的解决方案是downgrade docker,但似乎docker还没有修复到19.03.3版本,所以恢复到旧docker版本的解决方案是不可行的。
除了降级之外还有其他可能的解决方法吗?以前有人遇到过这个问题吗?有什么解决方案的建议吗?
【问题讨论】:
标签:
ruby-on-rails
docker
logging
redis
sidekiq
【解决方案1】:
我正在祈祷,但我认为我有一个解决方法。
因为问题似乎与日志记录问题有关。对于 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 个小时。如果这继续顺利运行到明天,那么现在也许这是一个合理的解决方法。