Поэтому я пытаюсь подключиться к Google Cloud SQL из своего Google App Engine. Все работает, но латентность очень высока. Простой запрос выбора занимает около 1,3 секунд. Однако, когда я подключаюсь с localhost, это занимает гораздо меньше времени. Разница в соединении заключается в следующем:
в App Engine yaml
MYSQL_DSN: /cloudsql/instanceName MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_DATABASE: dbname
в App Engine php
$servername = getenv('MYSQL_DSN'); $username = getenv('MYSQL_USER'); $password = getenv('MYSQL_PASSWORD'); $dbname = getenv('MYSQL_DATABASE'); $connection = new mysqli(null, $username, $password, $dbname, null, $servername);
при подключении к Cloud SQL в localhost я использую:
$servername = "ip.address"; $username = getenv('MYSQL_USER'); $password = getenv('MYSQL_PASSWORD'); $dbname = getenv('MYSQL_DATABASE'); $connection = new mysqli($servername, $username, $password, $dbname);
При подключении с localhost я разрешил IP-адрес своего компьютера на панели управления Cloud SQL, поэтому подключение напрямую через ip-адрес не представляет проблемы. Моя проблема заключается в том, что когда я запускаю свои php-файлы из localhost для подключения к Cloud SQL, время ожидания ниже, чем при подключении к App Engine. Любая идея, почему и как я могу это исправить?
Это известная проблема, связанная с экземплярами Cloud SQL в регионе Азия-Северо-Восток . Он отслеживается в журнале отслеживания общедоступных проблем Cloud SQL в разделе Issue 197 . Пожалуйста, отметьте вопрос, чтобы поддержать его, привлекая соответствующее внимание.
Основная проблема связана с расширением деятельности Японии (азия-северо-восток), которая была запущена только в 2016 году. В настоящий момент не существует идеального решения. Моя единственная рекомендация – попытаться переместить экземпляр Cloud SQL вне asia-northeast1. Вы можете уменьшить латентность, используя asia-east1 (Тайвань) или более близкий регион, если этот ход возможен в вашей ситуации.