Я запускаю множество процессов 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) без блокировок базы данных.Это странно, и нет никакой дискриминации, когда речь заходит о влиянии на какую работу.Единственный способ обойти это - убить контейнер и перезапустить процесс.Я прошел через вики и перепробовал все что есть.Кто-нибудь есть понимание того, что я могу попытаться решить эту проблему?