我面临一个问题,即sidekiq在docker中每隔几个小时就会崩溃。当sidekiq尝试连接到Redis并且重新启动容器不起作用时,调查日志会显示“ TimeoutError”。我可以使它再次工作的唯一方法是重新启动docker守护程序。
[经过大量调查,我认为根本原因与Docker中的日志记录问题有关,无法跟上Redis日志。我看到的诊断来自this post。他们的解决方案是downgrade docker,但似乎docker尚未修复到19.03.3版本,因此恢复到旧docker版本的解决方案是不可行的。
除了降级之外,还有其他可行的解决方法吗?有人遇到过这个问题吗?有解决方案的建议吗?
我用手指交叉但我思考我有一种解决方法。
由于该问题似乎一直徘徊在日志记录问题周围。简单的解决方案似乎是禁用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个小时了。如果此操作持续进行到明天,则可能是目前的合理解决方法。