如何关闭旧的Cloud Run修订版的SQL连接?

巴斯蒂安·斯坦

语境

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

从Cloud Run连接到Cloud 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尝试在池中维护的最小空闲连接数。如果空闲连接下降到该值以下,并且池中的总连接数小于maximumPoolSize,则HikariCP将尽最大努力快速而有效地添加其他连接。

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

idleTimeout-此属性控制允许连接在池中保持空闲状态的最长时间。仅当minimumIdle定义为小于maximumPoolSize时,此设置才适用。一旦池达到MinimumIdle连接,空闲连接将不被取消。

如果设置minimumIdle为0,则您的应用程序仍将能够maximumPoolSize一次使用最多连接。但是,一旦连接在池中空闲了idleTimeout几秒钟,它将被关闭。如果设置idleTimeout为1分钟之类的小数值,则在不使用池时,池使用的连接数将减少为0。

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档