Мои пользователи видят случайные тайм-ауты запроса на Heroku. К сожалению, я не могу последовательно воспроизводить их, что затрудняет их отладку. Существует множество возможностей для повышения производительности. путем уменьшения огромного количества запросов к базе данных по запросу и путем добавления большего количества кеширования - но без профилирования этого снимка в темноте.
Согласно нашей новой аналитике Relic, на сервере требуется много запросов от 1 до 5 секунд. Я знаю, что это слишком медленно, но это далеко не 30 секунд, необходимых для таймаута.
Вкладка "Ошибка" в новой реликвии показывает мне несколько разных запросов к базе данных, в которых происходит тайм-аут, но это не особенно медленные запросы, и это может быть разные запросы для каждого сбоя. Также для того же URL-адреса он иногда делает и иногда не показывает запрос к базе данных.
Как узнать, что происходит в этих конкретных случаях? Например. как узнать, сколько времени было потрачено в базе данных, когда произошел тайм-аут, в отличие от времени, которое он проводит в базе данных, когда нет ошибки?
Одна гипотеза, которую я имею, заключается в том, что в некоторых случаях база данных блокируется; возможно, сочетание чтения и письма.