Есть ли способ имитировать MySQL время ожидания базы данных в Google Cloud SQL? - PullRequest
0 голосов
/ 25 февраля 2020

В настоящее время я разрабатываю веб-приложение Google Cloud Run, которое достигает MySQL, и я столкнулся с ошибкой, которую не смог скопировать. Впервые я столкнулся с этой проблемой после того, как утром обновил приложение, оставив его открытым на ночь.

Вот сообщение об ошибке:

com. mysql .jdb c .exceptions.jdbc4.CommunicationsException: Последний пакет, успешно полученный от сервера, был 236 899 325 миллисекунд в go. Последний пакет, успешно отправленный на сервер, составил 236 899 326 миллисекунд go. длиннее, чем сконфигурированное сервером значение wait_timeout. Чтобы избежать этой проблемы, следует рассмотреть возможность истечения срока действия и / или проверки допустимости подключения перед использованием в приложении, увеличения значений, настроенных сервером для тайм-аутов клиента, или использования свойства подключения Connector / J 'autoReconnect = true'.

Я понимаю, что причина этой проблемы, скорее всего, связана с тайм-аутом соединения с базой данных до того, как мое приложение делает это, как в этом потоке .

Я намерен добавить флаг, увеличивающий ожидание время, отредактировав экземпляр Cloud MySQL, как описано в этой теме , чтобы, надеюсь, решить проблему.

Я хотел бы повторить эту проблему, чтобы я мог оценить, будет ли мое предполагаемое решение работать в в будущем, но я не нашел хорошего ответа для репликации аналогичного тайм-аута.

В Google Cloud Platform я пытался остановить и перезапустить базы данных, с которыми взаимодействует мое приложение, но это не воссоздало ошибка.

Кто-нибудь сталкивался с подобной проблемой? Если это так, как бы я go о воссоздании ошибки без необходимости ждать всю ночь?

1 Ответ

0 голосов
/ 05 марта 2020

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

Проблема с попыткой воспроизвести ошибку заключается в том, что вы не сможете снова получить именно эту ошибку, так как возможно, это произошло из-за того фактора, который вы не можете контролировать.

Надеюсь, вы найдете эту информацию полезной.

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