Rails App MongoDB слишком долго не отвечает - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть приложение Rails, которое развернуто на бесплатной dyno Heroku.Он использует MongoDB в качестве своей базы данных, которая размещается на экземпляре в Azure.Приложение также использует базы данных Redis & Elasticsearch, которые также размещаются в экземпляре Azure.Я добавил дополнения: New Relic (для мониторинга производительности приложений) и Rollbar (для отчетов об ошибках).

В большинстве случаев запросы MongoDB из приложения Rails работают отлично, а время отклика очень хорошее.Но несколько раз в день, MongoDB, кажется, занимает слишком много времени, чтобы ответить.Я приложил скриншот New Relic для лучшего понимания.enter image description here

Однако в это время приложение перестает функционировать и запросы к базе данных не работают.Я вижу аналогичную картину и в лазурном мониторинге.

Мое первое предположение - сервер MongoDB может быть перегружен и перестать отвечать на запросы.Но я мог запросить mongoDB напрямую у других клиентов базы данных, и он отправлял данные правильно.Следовательно, сервер mongoDB не был выключен.Моя вторая работа была посвящена отключению сервера.Но это был не тот случай, так как я мог видеть логи и сервер получал запросы.Наконец, я предположил, что выполнение некоторых запросов может занять больше времени, чем другие, но и здесь неудача.Эти запросы выполняются в большинстве случаев, вызывая проблемы только случайным образом, как видно на прикрепленном снимке экрана New Relic.

Примерно в то же время Rollbar также выдает следующую ошибку: Mongo::Error::SocketTimeoutError: Socket request timed out

Любая помощь в направлении, как диагностировать запрос высоко ценится.

...