Периодическое прерывание Rails 3.0, истекло время ожидания выполнения - PullRequest
2 голосов
/ 01 сентября 2011

Мы работаем с четырьмя экземплярами Amazon EC2 (один балансировщик нагрузки, один дБ и два приложения) и постоянно получаем случайные таймауты.Мы получаем как минимум один день, иногда больше.Вот несколько примеров:

Errno::ETIMEDOUT: Connection timed out - connect(2)
/usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/smtp.rb:546:in `initialize'

и

Timeout::Error: execution expired
[GEM_ROOT]/gems/activemodel-3.0.9/lib/active_model/attribute_methods.rb:354:in `match'

Я не уверен, как их отладить, поскольку они не связаны с кодом приложения или нагрузкой на сервер.Загрузка ЦП обычно колеблется ниже 10%, а самый большой скачок - до 60%.Пики, скорее всего, связаны с выполнением резервного копирования и не соответствуют времени ошибок тайм-аута.

Как можно отследить ошибки такого типа?

1 Ответ

3 голосов
/ 01 сентября 2011

Первый тайм-аут выглядит как законный тайм-аут соединения для отправки почты по SMTP.Вы используете свой собственный SMTP-сервер или используете службу?

Похоже, что sendgrid испытывает задержки / тайм-ауты последние пару дней:

Мы 'В настоящее время мы видим много информации в наших очередях, и электронные письма могут быть отложены на короткий период.Следите за обновлениями.# status

Исправление для тайм-аута / сбоя службы SMTP

Настройте локальный почтовый ретранслятор, который будет удерживать почту и отправлять ее повторно в случае подобных сбоев.Мы используем локальный ретранслятор Postfix для производства именно этой проблемы (поэтому ActiveMailer использует sendmail для Postfix, который ставит в очередь почту и доставляет через SMTP relay в Sendgrid).

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