Закройте все соединения, чтобы сократить время безотказной работы на экземпляре Cloud SQL - PullRequest
0 голосов
/ 02 апреля 2019

Context

Я запускаю postgres db для самого маленького экземпляра Cloud SQL n1-standard-1 (1 ЦП, ОЗУ 3,75 ГБ, хранилище SSD 10 ГБ). Я получаю к нему доступ через приложение фляги, работающее на App Engine, используя sqlalchemy. У меня только 20 пользователей на моей платформе с очень редким использованием БД (~ 100 запросов в день).

Задача

Sqlalchemy создает пул соединений для более производительных запросов. Это означает, что соединения, которые мое приложение устанавливает с моей базой данных, являются постоянными, даже если колба не работает. Пока соединение установлено, экземпляр Cloud SQL остается в рабочем состоянии. Поэтому я плачу за бесполезное время безотказной работы. Экземпляр Cloud SQL в настоящее время стоит мне 60 долларов в месяц. Я хотел бы уменьшить это.

Попытки решения

Я начал искать способы закрыть все соединения через sqlalchemy. Единственное решение, которое я нашел, - отключить пул соединений в моем приложении фляги. Это предотвратит сохранение соединений. Я опасаюсь, что этот подход не будет использоваться (я использую Flask-SQLAlchemy, для которого не выставлена ​​базовая опция sqla poolclass ( link ). Поэтому я опасаюсь применять ее в работе .

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 03 апреля 2019

В облачном SQL есть примеры того, как управлять соединениями, в том числе с SQLAlchemey здесь . Как уже упоминалось в другом комментарии, вы также можете использовать класс [NullPool][2], который не объединяет соединения.

Однако стоит отметить, что экземпляры SQL Gen 2 Cloud не имеют функции «без сервера» - они работают, даже если к ней нет подключений. Если вам нужен действительно «серверный» продукт с платой за использование, вы можете использовать что-то вроде Cloud Firestore . Если вы предпочитаете придерживаться реляционной базы данных, вы можете уменьшить размер экземпляра до db-f1-micro или db-g1-small размера экземпляра, что значительно дешевле (см. цена ).

...