Использует ли стандартная среда GAE Python3 + Cloud SQL MySQL 2-го поколения Cloud SQL Proxy? - PullRequest
0 голосов
/ 19 февраля 2019

В журналах Cloud SQL сообщается о нескольких ошибках, таких как следующие в стандартном приложении Python3 GAE, подключающемся к Cloud SQL MySQL 2-го поколения:

textPayload: "2019-02-19 485 [Note] Aborted connection 485 to db: 'my_database' user: 'root' host: 'cloudsqlproxy~74.125.xx.xxx' (Got an error reading communication packets)"

GAE Python3 вообще использует Cloud SQL Proxy под капотом?Как я могу избежать этих проблем?

1 Ответ

0 голосов
/ 19 февраля 2019

Да, GAE Standard использует Cloud SQL Proxy для связи с экземпляром Cloud SQL (если вы осуществляете доступ с использованием имени экземпляра, но не обязательно при доступе по общему IP) .Кроме того, сообщение об ошибке не может быть проблемой.

"Прервано соединение xxx с базой данных: 'имя_бд' 'пользователь:' sql_user 'хост:' ip_address '"

Это сообщение вызывается, когда существующее соединение прерывается ненадлежащим образом, что может выглядеть ошибочно, но на самом деле совершенно нормально.Прерванные соединения происходят из-за нечистого закрытия соединения (например, когда экземпляры уменьшаются и прерываются) или из-за проблем с сетью между сервером и клиентом, но не из-за сервера.

Это может повлиять на ваш экземпляр SQL при подключенииот GCE или GAE, если долгоживущие простаивающие соединения являются общими для вашего варианта использования.Для исправления:

  • Установить wait_timeout значение флага ниже 600 секунд : https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_wait_timeout

  • Реализация уровня приложенияkeepalives : Многие инфраструктуры пулов подключений предоставляют для этого простой вариант конфигурации.В противном случае создайте активность для всех открытых соединений, отправив простой оператор SQL, такой как «SELECT 1;»регулярно, не реже одного раза в 5 минут.

...