Sidekiq каждые несколько часов падает в докере - PullRequest
0 голосов
/ 19 октября 2019

Я сталкиваюсь с проблемой, из-за которой каждые несколько часов в докере происходит сбой sidekiq. Исследование журналов показывает «TimeoutError», когда sidekiq пытается подключиться к redis и перезапуск контейнеров не работает. Единственный способ заставить его работать снова - это перезапустить демон docker.

После большого количества исследований, я считаю, что основная причина связана с проблемами журналирования в Docker, не поспевающими за журналами redis. Диагноз, который я видел для этого, прибывает из этого сообщения . Их решением было downgrade docker , но кажется, что docker все еще не исправлен до версии 19.03.3, поэтому решение возврата к старой версии Docker неосуществимо.

Любое возможновозможно ли обходное решение, кроме понижения? Кто-нибудь сталкивался с этой проблемой раньше? Есть предложения по решению?

1 Ответ

0 голосов
/ 19 октября 2019

Я скрещиваю пальцы, но я думаю У меня есть обходной путь.

Поскольку проблема, похоже, связана с проблемами ведения журнала. Кажется, что простые решения либо отключают ведение журнала, либо устанавливают режим «неблокирования» для контейнера redis, к которому пытается подключиться sidekiq.

Ниже приведен пример файла 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 часов. Если это будет продолжаться до завтра, то, возможно, это разумный обходной путь.

...