关闭所有连接以减少Cloud SQL实例的正常运行时间

时间:2019-04-02 14:20:22

标签: sqlalchemy flask-sqlalchemy google-cloud-sql

上下文

我正在最小的Cloud SQL实例 n1-standard-1 (1个CPU,3.75 GB内存,10 GB SSD存储)上运行一个postgres数据库。我使用sqlalchemy通过运行在App Engine上的flask应用程序访问它。我的平台上只有20个用户,数据库的使用非常稀疏(每天约有100个查询)。

问题

Sqlalchemy为更高性能的查询创建一个连接池。这意味着即使flask应用程序处于休眠状态,我的应用程序与数据库的连接仍是持久的。只要存在连接,Cloud SQL实例就会保持启动状态。因此,我要为无用的正常运行时间付出代价。目前,Cloud SQL实例的费用为每月60美元。我想减少这个。

尝试的解决方案

我开始研究通过sqlalchemy关闭所有连接的方法。我发现的唯一解决方案是在flask应用程序上禁用连接池。这样可以防止连接持续存在。我对这种方法的担心是,它没有按时进行(我正在使用Flask-SQLAlchemy,它没有公开底层的sqla poolclass选项(link)。因此,我在生产中实现它很谨慎。 / p>

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Cloud SQL上发布了有关如何管理连接的示例,包括如何使用SQLAlchemey here。如另一条评论中所述,您也可以使用ens = " "类,该类不合并连接。

但是,值得指出的是,第2代Cloud SQL实例不具有“无服务器”功能-即使没有连接也可以运行。如果您要使用按使用量付费的真正“无服务器”产品,则可以使用Cloud Firestore之类的东西。如果您希望使用关系数据库,则可以将实例大小降级为[NullPool][2]db-f1-micro实例大小-便宜得多(请参见pricing)。