0

我对 postgresql db 有点陌生。我已经在 Azure Cloud 上为我的 PostgreSQL 数据库进行了设置。

它是 Ubuntu 18.04 LTS(4vCPU,8GB RAM)机器,带有 PostgreSQL 9.6 版本。

发生的问题是,当与 PostgreSQL 数据库的连接保持空闲一段时间(例如 2 到 10 分钟)时,与数据库的连接没有响应,因此它无法满足请求并继续处理查询。

我的 JAVA Spring-boot 应用程序也是如此。连接没有响应,查询继续处理。

这是随机发生的,因此时间无法追踪,有时会在 2 分钟内发生,有时会在 10 分钟内发生,有时则不会。

我尝试过使用 PostgreSQL 配置文件参数。我努力了:

tcp_keepalive_idle、tcp_keepalive_interval、tcp_keepalive_count。

还有 statement_timeout 和 session_timeout 参数,但无论如何都不会改变。

任何建议或帮助将不胜感激。

谢谢你

4

1 回答 1

0

如果要在 Azure VM 上设置 PostgreSQL DB 连接,则必须注意存在 Unbound 和 Outbound 连接超时。根据 https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-connections#idletimeout,出站连接有 4 分钟的空闲超时。此超时不可调整。对于入站超时,可以在 Azure 门户上进行更改。

我们遇到了类似的问题,并且能够在客户端解决它。我们将 Spring-boot 的默认 Hikari 配置更改如下:

光:

  • 连接超时:20000

  • 验证超时:20000

  • 空闲超时:30000

  • 最大寿命:40000

  • 最小空闲:1
  • 最大池大小:3
  • 连接测试查询:选择 1
  • 连接初始化 sql:选择 1
于 2019-04-03T05:28:35.637 回答