Ошибка при подключении к Cloud SQL, Cloud Run и Django
У меня есть приложение, работающее на Django в Cloud Run, которое подключается к базе данных PostgreSQL, размещенной на Cloud SQL. В настоящее время оно работает и настроено следующим образом:
DATABASES = {'default': env.db()}
DATABASES['default']['OPTIONS'] = {
'pool': {
'min_size': 5,
'max_size': 20
}
}
Эта конфигурация работает, но количество активных соединений остается высоким. Когда я удаляю конфигурацию пула, я получаю несколько ошибок.
2025/04/12 16:24:15 Cloud SQL connection failed. Please see https://cloud.google.com/sql/docs/mysql/connect-run for additional details: failed to get instance: Refresh error: failed to get instance metadata (connection name = "xxx"): googleapi: Error 429: Quota exceeded for quota metric 'Connect Queries' and limit 'Connect Queries per minute per user per region' of service 'sqladmin.googleapis.com' for consumer 'xxx'.
Даже после настройки CONN_MAX_AGE он продолжает выдавать ошибки. Я пробовал настроить pgBouncer, но безуспешно из-за необходимости получения прав, которые невозможно получить на Cloud SQL. Наконец, я запускаю Django следующим образом:
WEB_CONCURRENCY=${WEB_CONCURRENCY:-4}
THREADS=${THREADS:-8}
exec /usr/local/bin/gunicorn project.asgi:application \
--bind "0.0.0.0:$PORT" \
--workers "$WEB_CONCURRENCY" \
--worker-class uvicorn.workers.UvicornWorker \
--threads "$THREADS" \
--timeout 0
Кто-нибудь сталкивался с подобным или имеет решение для этого?
Я сосредоточусь на распространенном сообщении об ошибке:
Cloud SQL connection failed. Please see
https://cloud.google.com/sql/docs/mysql/connect-run
for additional details
- Слишком общий, чтобы на нем заострять внимание, но для совместного использования – тайм-ауты при переходе от Cloud Run к Cloud SQL могут возникать по целому ряду причин, поскольку существует множество различных способов установить это соединение (общедоступный IP/ частный IP, TCP, Unix, Cloud SQL connector). Каждый способ установления соединения может по-разному приводить к возникновению тайм-аута, и настройки, которые мы можем рекомендовать, будут немного отличаться в зависимости от используемого языка / метода подключения.
Error 429: Quota exceeded for quota metric 'Connect Queries' and limit 'Connect Queries per minute per user per region' of service '
sqladmin.googleapis.com
' for consumer 'xxx'
- Этот вариант более подробный, и, похоже, вы превысили лимит квоты. Я бы рекомендовал отправить запрос на увеличение квоты в команду Cloud SQL team и посмотреть, смогут ли они одобрить это или предоставить дополнительную информацию.