如何关闭旧云运行修订版的 SQL 连接?



>上下文

我在Cloud Run上运行一个SpringBoot应用程序,该应用程序使用Hikari连接池连接到postgres11 CloudSQL数据库。我正在使用最小的 PSQL 实例(1vcpu/614mb/25 连接限制(。对于设置,我遵循了以下资源:

从云运行连接到云 SQL

管理数据库连接

问题

部署第三个修订版后,出现以下错误:

FATAL: remaining connection slots are reserved for non-replication superuser connections

我发现了什么

  • 默认连接池大小为 10,因此它在第三次部署(30> 25(失败。

  • 删除旧修订版时,Cloud SQL 管理面板中显示的活动连接将减少 10,下一次部署将成功。

问题

看起来,旧的Cloud Run修订版一直处于"冷"状态,维护其连接池。有没有办法在不删除修订的情况下关闭这些连接?

在最佳实践部分,它说:

。我们建议您使用支持连接池的客户端库,这些连接池会自动重新连接断开的客户端连接。

在 Cloud Run 中管理连接池的推荐方法是什么,因为旧版本似乎以某种方式设法保持其连接?

谢谢!

目前,Cloud Run 不提供任何保证,说明它在启动后会保持温暖多长时间。不使用时,实例会因不一定关闭而受到严重限制。 因此,您有一些修订,即使不是定向流量,也会阻止连接。

即使在这种情况下,我也不同意您应该避免使用连接池的想法。连接池可以降低延迟、提高稳定性,并有助于设置打开连接数的上限。或者,您可以使用以下一些配置选项来帮助检查池:

minimumIdle- 此属性控制 HikariCP 尝试在池中维护的最小空闲连接数。如果空闲连接低于此值,并且池中的连接总数小于最大池大小,HikariCP 将尽最大努力快速有效地添加其他连接。

maximumPoolSize- 此属性控制允许池达到的最大大小,包括空闲连接和使用中的连接。

idleTimeout- 此属性控制允许连接在池中空闲的最长时间。仅当 minimumIdle 定义为小于 maxumPoolSize 时,此设置才适用。一旦池达到最小空闲连接数,空闲连接将不会停用。

如果将minimumIdle设置为 0,则应用程序仍能够一次使用最多maximumPoolSize个连接。但是,一旦连接在池中空闲idleTimeout秒,它就会关闭。如果将idleTimeout设置为较小的值(如 1 分钟(,它将允许池使用的连接数在不使用时缩减为 0。

希望这有帮助!

这里的问题是连接在打开时不会被 HikariCP 关闭。我对光了解不多,但我发现这解释了如何通过光处理连接。我希望这有所帮助!

相关内容

  • 没有找到相关文章

最新更新