上下文
我正在最小的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>
谢谢您的帮助。
答案 0 :(得分:0)
Cloud SQL上发布了有关如何管理连接的示例,包括如何使用SQLAlchemey here。如另一条评论中所述,您也可以使用ens = " "
类,该类不合并连接。
但是,值得指出的是,第2代Cloud SQL实例不具有“无服务器”功能-即使没有连接也可以运行。如果您要使用按使用量付费的真正“无服务器”产品,则可以使用Cloud Firestore之类的东西。如果您希望使用关系数据库,则可以将实例大小降级为[NullPool][2]
或db-f1-micro
实例大小-便宜得多(请参见pricing)。