Postgresql 如何关闭旧云运行版本的SQL连接?

Postgresql 如何关闭旧云运行版本的SQL连接?,postgresql,google-cloud-platform,google-cloud-sql,hikaricp,google-cloud-run,Postgresql,Google Cloud Platform,Google Cloud Sql,Hikaricp,Google Cloud Run,上下文 我正在云上运行SpringBoot应用程序,它使用Hikari连接池连接到postgres11 CloudSQL数据库。我使用的是最小的PSQL实例(1vcpu/614mb/25连接限制)。对于设置,我遵循了以下资源: 问题 部署第三个修订版后,出现以下错误: 致命:剩余的连接插槽保留给非复制超级用户连接 我的发现 默认连接池大小为10,因此它在第三次部署时失败(30>25) 删除旧版本时,Cloud SQL管理面板中显示的活动连接将减少10,并且下一次部署将成功 问题 看起来,

上下文

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

问题

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

致命:剩余的连接插槽保留给非复制超级用户连接

我的发现

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

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

问题

看起来,旧的云运行版本被保持在“冷”状态,以维护它们的连接池。是否有办法在不删除修订的情况下关闭这些连接

在这一节中,它说:

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

在Cloud Run中管理连接池的推荐方法是什么,因为旧版本似乎能够以某种方式维护它们的连接


谢谢!

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

目前,Cloud Run无法保证启动后会保持温暖多久。W不使用时,实例会因不一定关闭而受到严重限制。因此,您有一些修改,即使在没有定向流量的情况下也会阻塞连接

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

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

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

idleTimeout
-此属性控制允许连接在池中处于空闲状态的最长时间。此设置仅在将MinimumMidle定义为小于maximumPoolSize时适用。一旦池达到MinimumMidle连接,空闲连接将不会失效

如果将
minimumpidle
设置为0,则应用程序仍可以一次使用最多
maximmoolsize
个连接。但是,一旦池中的连接空闲
idleTimeout
秒,它将关闭。如果将
idleTimeout
设置为1分钟之类的小值,它将允许连接数不使用时,池正在使用的连接可缩小到0


希望这有帮助!

您如何处理代码中的这些连接?如果它们未被使用或始终处于活动状态,您是否正确关闭它们?您好,连接池由Hikari()管理。目前,除了迁移(flyway)之外,我没有从代码访问数据库正在启动时运行。AFAIK Hikari尝试维护配置的连接数(默认值=10),即使应用程序未使用它们。因此,为了回答您的问题,我假设它们仍处于活动状态。Cloud Run不会通知您的应用程序,因此,软件关闭挂钩将不起作用。对于Cloud Run,请打开连接和关闭连接。不要期望连接池等按预期工作。IMHO,文档除了长时间运行的应用程序外,on不应建议云运行的连接池,即使这样,您也应该能够编写遵循先打开后关闭原则的代码。您好,谢谢您的回答。Hikari+Spring在应用程序关闭时自动关闭连接:我相信您链接的问题的答案不适用,由于我在这个阶段没有处理代码中的任何连接。您认为有没有可能在部署新版本时应用程序没有正确关闭,因此连接没有清理?Ihmmm在您共享的链接中提到,使用shutdown()或close()是必要的Spring有调用destroy方法的方法(我认为您也应该以某种方式调用)让我知道我的理论是否正确,以便我可以了解更多关于该产品的信息:)我最终遵循了kurtisvg的建议,并通过调整配置解决了问题,因此我没有发现有关如何以编程方式处理此问题的新信息。无论如何,感谢您的输入:)