Через некоторое время работники Sidekiq застряли - PullRequest
0 голосов
/ 03 октября 2018

В последнее время я тестировал некоторый код и оказался в странной ситуации.Позвольте мне попытаться объяснить немного.У меня есть несколько фрагментов кода (более 500), которые выполняют следующие действия: - анализ строки - анализ JSON - анализ массива - выполнение запросов HTTP / HTTPS через Фарадей

В основном все они работают вместе в фоновом режиме, чтобыизвлекать и анализировать данные.

У меня есть 30/40 работников Sidekiq, которые работают отлично.В какой-то момент случайно (но обычно через 1 день) рабочие застряли.Обычно они занимают от 1 секунды до 1 минуты, в какой-то момент работники HTTP / HTTPS зависают и работают вечно, а система работает все медленнее и медленнее.

Я читал из разных мест, например: - https://github.com/mperham/sidekiq/issues/862 (HenleyChiu прокомментировал 5 октября 2013 г. - и несколько других) - https://github.com/mpowered/sidekiq-nag

Иногда работники Sidekiq застревают, и люди пишут коды (или хаки), чтобы перезапустить Sidekiq, если это произойдет.Ребята, вы нашли ту же проблему с Sidekiq, особенно если фоновая работа связана с HTTP / HTTPS-запросом?

Итак, мои вопросы:

  • Кто-нибудь нашел себя в подобномситуация?Что вы сделали?
  • Есть ли способ в фоновом режиме, чтобы гарантировать, что все соединения HTTP / HTTPS будут сброшены?Как, например, я могу убедиться, что все соединения MYSQL закрыты с помощью следующего кода (в конце).
  • Действительно ли HTTP / HTTPS может создать проблемы в Sidekiq?Есть ли способ убить ожидающие соединения HTTP / HTTPS?Не уверен, что использование Timeout в Ruby не является идеальным ...

У кого-нибудь есть пример кода, которым вы хотите поделиться, или несколько идей о том, как его исправить?

ensure
        ActiveRecord::Base.clear_active_connections!
        ActiveRecord::Base.connection.close

Большое спасибо, и я с нетерпением жду вашего ответа.

...