Я пытаюсь показать определенные страницы контроллера в моем приложении rails, когда соединение с базой данных исчезает. Я делаю это, перехватывая Mysql :: Error в методе rescue_action и отображая соответствующие страницы. Когда одна только служба mysql остановлена, я получаю исключение Mysql :: Error очень быстро и могу отрисовывать страницы без задержки.
Но когда сам сервер выключен, rails требуется 3 минуты, чтобы выдать Mysql :: Error, и после 5-6 запросов весь сайт перестает отвечать.
Я попытался выяснить, какой метод в среде rails занимает так много времени, когда сервер mysql выключен. Это был метод connection.real_connect (в файле mysql_adapter активной записи), для возврата которого потребовалось 3 минуты с исключением.
, поэтому я решил отключить этот метод, используя systemTimer gem. Этот патч обезьяны работал отлично, когда я запускаю сайт с подключением к базе данных и немедленно выключаю сервер базы данных.
Но когда я запускаю веб-сайт с базой данных и некоторое время получаю доступ к веб-сайту, а затем выключаю сервер базы данных, он вообще работает. и весь сайт перестает отвечать на запросы, как и раньше. Интересно, в чем разница между этими двумя сценариями?
Я думаю, мне нужно узнать более подробно о том, как рельсы обрабатывают соединение с базой данных. как он реагирует на разрыв соединения с базой данных. так, чтобы я мог определить точные места, где я могу поместить патчи обезьяны и заставить это работать для моего специального требования. Я не видел ни одной соответствующей статьи, объясняющей это.
Любая помощь будет очень полезна для меня
Спасибо