1

我一直在尝试让我们的微服务设置使用 AWS RDS 代理,而不是出于故障转移原因直接连接到集群。它连接得很好,但是在运行了一段时间后,会出现一些错误,最终会对当时发生的任何正在进行的呼叫产生不良影响。

错误消息是:

  • HikariPool-1 - 无法验证连接 org.postgresql.jdbc.PgConnection@11bc3390(此连接已关闭。)。可能考虑使用更短的 maxLifetime 值。
  • 数据源健康检查失败

我在 application.properties 文件中设置的额外配置属性(除了用户名、密码、url)是:

spring.datasource.hikari.maximum-pool-size=50
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.max-lifetime=600000
spring.datasource.hikari.idle-timeout=180000

我的 RDS 代理设置几乎是默认设置。

任何想法如何解决这些错误,以便我们的微服务的连接不会产生错误并导致任何不稳定?

4

1 回答 1

1

我没有解决办法。我想您需要调试日志或调试器会话才能了解此特定问题的核心。

但我质疑一般架构。让我们看一下文档:

Amazon RDS 代理是 Amazon Relational Database Service (RDS) 的完全托管、高度可用的数据库代理,它使应用程序更具可扩展性、对数据库故障更具弹性并且更安全。

您的 Amazon RDS 代理实例维护与您的 RDS 数据库实例的已建立连接池,从而减少了建立新连接时通常发生的数据库计算和内存资源压力。

https://aws.amazon.com/de/rds/proxy/

所以 RDS Proxy 是高可用的,并且维护了一个连接池。这让我想知道,为什么您还需要在微服务本身上建立一个连接池(Hikari)。似乎是多余的。您的设置中有两种有效的故障转移机制。我可以想象这是您所描述问题的根源。

我建议只使用更简单的单连接 DataSource 实现来连接到 RDS 代理。

于 2022-01-20T10:48:52.727 回答