У меня возникла проблема с Sidekiq.
При мониторинге через веб-интерфейс Sidekiq он обрабатывает задания невероятно быстро. Однако периодически возникает ситуация, когда он, кажется, перегружается и начинает работать крайне медленно — со скоростью около 1–5% от обычной. При этом восстановление не происходит, даже если очистить Redis, хотя использование ресурсов сервера в норме и низкое.
Кажется, что когда очередь достигает определённого размера, система «зависает» и резко замедляется, из-за чего очередь ещё больше растёт. Но это лишь предположение — возможно, очередь просто стала большой из-за того, что обработка замедлилась по другой причине.
Этот GIF иллюстрирует то, что я наблюдаю:
Ресурсов сервера более чем достаточно: загрузка CPU сейчас очень низкая — менее 10%. Также есть запас оперативной памяти и места на SSD. Сервер имеет 16 ядер CPU с 32 потоками. Я пробовал запускать от 8 до 14 процессов unicorn_sidekiq. Также пробовал 20, но это вызывало множество ошибок 5xx.
Мне удалось ускорить медленные задания, отображаемые на вкладке «Busy» в веб-интерфейсе Sidekiq, используя рекомендации из статьи:
(добавив ‘vm.overcommit_memory = 1’ в файл /etc/sysctl.conf и перезагрузив систему), а также уменьшив количество процессов unicorn_sidekiq до 8 (с 12).
Однако система всё ещё работает медленно. Вчера в логах Redis я заметил следующее сообщение (единственное другое предупреждение касалось того, что параметр overcommit_memory не был установлен в 1, что я уже исправил):
# WARNING: /proc/sys/net/core/somaxconn установлен на низкое значение 128
^ Кто-нибудь уже решал эту проблему?
В любом случае, если у кого-то есть идеи относительно причины и/или решения — пожалуйста, поделитесь. Буду очень признателен.
Очень хотелось бы решить эту проблему раз и навсегда, чтобы она больше не возникала, а не просто очищать Redis.
Вот скриншот того, что я вижу на панели мониторинга Sidekiq:
А также несколько скриншотов заданий на вкладке «Busy»:
Кроме того, знает ли кто-нибудь, безопасно ли использовать эту опцию? Удаление очереди низкого приоритета через веб-интерфейс Sidekiq?





