У меня есть приложение Rails, которое развернуто на бесплатной dyno Heroku.Он использует MongoDB в качестве своей базы данных, которая размещается на экземпляре в Azure.Приложение также использует базы данных Redis & Elasticsearch, которые также размещаются в экземпляре Azure.Я добавил дополнения: New Relic (для мониторинга производительности приложений) и Rollbar (для отчетов об ошибках).
В большинстве случаев запросы MongoDB из приложения Rails работают отлично, а время отклика очень хорошее.Но несколько раз в день, MongoDB, кажется, занимает слишком много времени, чтобы ответить.Я приложил скриншот New Relic для лучшего понимания.![enter image description here](https://i.stack.imgur.com/nvchh.png)
Однако в это время приложение перестает функционировать и запросы к базе данных не работают.Я вижу аналогичную картину и в лазурном мониторинге.
Мое первое предположение - сервер MongoDB может быть перегружен и перестать отвечать на запросы.Но я мог запросить mongoDB напрямую у других клиентов базы данных, и он отправлял данные правильно.Следовательно, сервер mongoDB не был выключен.Моя вторая работа была посвящена отключению сервера.Но это был не тот случай, так как я мог видеть логи и сервер получал запросы.Наконец, я предположил, что выполнение некоторых запросов может занять больше времени, чем другие, но и здесь неудача.Эти запросы выполняются в большинстве случаев, вызывая проблемы только случайным образом, как видно на прикрепленном снимке экрана New Relic.
Примерно в то же время Rollbar также выдает следующую ошибку: Mongo::Error::SocketTimeoutError: Socket request timed out
Любая помощь в направлении, как диагностировать запрос высоко ценится.