Как отлаживать застрявшие задания Sidekiq - PullRequest
0 голосов
/ 27 сентября 2019

Я запускаю множество процессов Sidekiq, и часто все работники всего процесса Sidekiq застрянут (то есть задания застряли навсегда и никогда не завершатся. Я давал это в течение часа, прежде чем пришлось убиватьпроцесс).Я заметил, что это стало происходить гораздо чаще, когда я уменьшил Postgres 'max_connections до 100 (вместо 300), поэтому я подозреваю, что это может быть связано с чем-то с базой данных.Каждый процесс Sidekiq выполняется с:

  • --concurrency 6
  • пулом базы данных 100
  • в Google Cloud Engine n1-standard-1 экземпляр
  • работает в контейнерах Docker, организованных Docker Swarm
  • Postgres 9.2
  • Rails 5.2.3
  • Sidekiq 5.2.6 (без плагинов / расширений)

Некоторые задания, которые застряли, иногда бывают очень простыми (базовые CRUD) без блокировок базы данных.Это странно, и нет никакой дискриминации, когда речь заходит о влиянии на какую работу.Единственный способ обойти это - убить контейнер и перезапустить процесс.Я прошел через вики и перепробовал все что есть.Кто-нибудь есть понимание того, что я могу попытаться решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...