Выполнение Rails Net :: OpenTimeout истекло после обновления до Ruby 2.5.3 - PullRequest
0 голосов
/ 28 октября 2018

Буквально через одну секунду после обновления нашего производственного приложения до Ruby 2.5.3 с Ruby 2.3.6 (мы находимся на Rails 5.2.0), мы начали получать оповещения Net :: OpenTimeout в нашей платформе мониторинга исключений.

Мы изолировали развертывание обновления Ruby (которое просто меняло версию ruby ​​в .ruby-version и Gemfile), чтобы мы могли точно определить любые новые проблемы, связанные с изменением версии ruby.

Ruby 2.5.3 был установлен с использованием rvm.

Мы используем mandrill для отправки электронных писем, и их служба поддержки говорит, что с их платформой все в порядке, что, по нашему мнению, является правдой, поскольку было бы слишком много совпадений для тех случаев, когда исключения начинают появляться в точном втором завершенном развертывании. .

Мы используем Sidekiq, поэтому после сбоя заданий они попадают в очередь повторов и, в конце концов, перезапускаются, когда они успешно выполняются. Это очень случайно, но почти 70% наших почтовых программ сейчас терпят неудачу в первый раз в Сидекике и только потом отправляются со второй или третьей попытки.

Вот наш конфиг mandrill:

    {
        address: 'smtp.mandrillapp.com',
        authentication: :plain,
        user_name: 'ouruser@name.com',
        port: 2525,
        password: 'thisIsNotOurRealPassword',
        domain: 'ourdomain.com'
      }

ОБНОВЛЕНИЕ : проблемы были еще более катастрофическими, поскольку каждое исходящее соединение, которое использует наше приложение (например, внешние API), также истекает по тайм-ауту с истечением времени выполнения Net :: OpenTimeout, очень случайно ( но частый) путь.

Плохая новость заключается в том, что даже если мы повторно развернем с использованием Ruby 2.3.6, проблемы не исчезнут.

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