在Google App Engine中使用数据库连接池有很多问题,但最近发生了很多变化。到目前为止,我从来没有得到过一个连接池来使用GAE。然而,我认为最近的一些开发可能允许连接池工作,这可能是为什么在Google文档(似乎最近更新)中提到它的原因。
https://cloud.google.com/sql/docs/mysql/connect-app-engine
有人能确认可以使用连接池吗?
1)我们使用了Google Cloud SQL第一代,数据库可以停用(进入睡眠状态)。这将使任何现有的连接失效。
使用第二代数据库时,无需停用数据库。所以这可能会解决这个问题。
2)许多连接池实现都使用线程。
随着Java 8在GAE上的支持,看起来线程是被允许的。
3)有人认为GAE有限的数据库连接数(12个)是使用连接池的一个原因。连接池大小可以设置为GAE的限制,因此应用程序永远不会超过该限制。
a)首先,根据数据库的大小,文档显示连接的数量要多得多。
https://cloud.google.com/sql/docs/quotas
b)其次,如果GAE应用程序有限制,那么限制是针对单个服务器实例还是针对整个GAE应用程序?
任何确认上述想法有意义的人都将不胜感激。
发布于 2019-07-31 16:58:29
关于1)是的,第二代云SQL实例,您的实例不会下线,除非是为了进行维护等。
2)我不明白为什么不能使用线程连接到第二代云SQL数据库。使用Java 8,您完全可以做到这一点。要检查您打开了多少线程,可以运行mysql> SHOW STATUS WHERE Variable_name = 'Threads_connected';
对于3a),我会使用您已经提供的官方文档链接,但请记住,数据库连接消耗服务器和连接的应用程序上的资源。始终使用良好的连接管理实践,以最大限度地减少应用程序的占用空间,降低超过云SQL连接限制的可能性。12个连接的限制在过去确实存在,但现在已经不存在了。
3b)当限制或配额涉及Google app Engine应用程序时,除非指定为每个实例,否则它是针对整个应用程序的。更具体地说,对于云SQL连接,您可以找到限制here,实际上有一个特定于实例的限制。对于在标准环境中运行的每个App Engine实例,不能有超过100个并发连接。
我希望这对你有帮助!
https://stackoverflow.com/questions/57280384
复制相似问题