0

关于在 Google App Engine 中使用数据库连接池有很多问题,但最近发生了很多变化。到目前为止,我永远无法获得与 GAE 一起使用的连接池。但是,我认为最近的一些开发可能允许连接池工作,这可能是谷歌文档中提到它的原因(最近似乎已经更新)。

https://cloud.google.com/sql/docs/mysql/connect-app-engine

有人可以确认可以使用连接池吗?

1) 我们使用了 Google Cloud SQL 第一代,数据库可能会停用(进入睡眠状态)。这将使任何现有的连接陈旧。

使用第二代数据库,不会停用数据库。所以这可能会解决问题。

2) 许多连接池实现使用线程。

随着 GAE 支持 Java 8,看起来允许使用线程。

3)有人认为GAE有限的数据库连接数(12)是使用连接池的一个理由。连接池大小可以设置为 GAE 的限制,因此应用程序永远不会超过限制。

a) 首先,根据数据库的大小,文档表明连接的数量要大得多。

https://cloud.google.com/sql/docs/quotas

b) 其次,如果 GAE 应用程序有限制,是每个服务器实例的限制还是整个 GAE 应用程序的限制?

任何确认上述想法是有道理的都将不胜感激。

4

1 回答 1

2

关于 1) 是的,第二代 Cloud SQL 实例,除非是为了维护等,否则您的实例不会停用。

2) 我不明白为什么不能使用线程连接到第二代 Cloud SQL 数据库。使用 Java 8,您绝对可以做到这一点。要检查您打开了多少线程,您可以运行mysql> SHOW STATUS WHERE Variable_name = 'Threads_connected';

对于 3a),我会使用您已经提供的官方文档链接,但请记住数据库连接会消耗服务器和连接应用程序上的资源。始终使用良好的连接管理做法来最大程度地减少应用程序的占用空间并降低超出 Cloud SQL 连接限制的可能性。过去确实存在 12 个连接的限制,但它不再存在。

3b) 当限制或配额指的是 Google App Engine 应用程序时,它适用于整个应用程序,除非指定它是针对每个实例的。更具体地说,对于 Cloud SQL 连接,您可以在此处找到限制,实际上存在特定于实例的限制。对于在标准环境中运行的每个 App Engine 实例,您的并发连接数不能超过 100 个。

我希望这会有所帮助!

于 2019-07-31T08:58:28.767 回答