AWS RDS PostgreSQL错误“剩余连接插槽保留用于非复制超级用户连接”

问题描述 投票:16回答:3

在仪表板中,我看到数据库实例当前有22个打开的连接,阻止了与错误的新连接:

剩余的连接槽保留用于非复制超级用户连接。

我正在从EC2实例上运行的Web服务API访问数据库,并始终保持最佳实践:

Connection connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
Class.forName(DB_CLASS);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(SQL_Query_String);
...
resultSet.close();
statement.close();
connection.close();
  1. 我可以在代码中执行其他操作吗?
  2. 我应该在数据库管理中做些什么吗?
  3. 有没有办法定期关闭连接?
sql postgresql amazon-web-services database-connection amazon-rds
3个回答
3
投票

我正在使用Amazon RDS,SCALA,Postgresql和Slick。首先 - RDS中可用连接的数量取决于可用RAM的数量 - 即RDS实例的大小。最好不要更改默认的conn号码。

您可以通过在RDS数据库实例上执行以下SQL语句来检查最大连接数:

show max_connections; 

检查您的SPRING配置以查看您产生的线程数:

database {
  dataSourceClass = org.postgresql.ds.PGSimpleDataSource
  properties = {
    url = "jdbc:postgresql://test.cb1111.us-east-2.rds.amazonaws.com:6666/dbtest"
    user = "youruser"
    password = "yourpass"
  }
  numThreads = 90
}

所有连接都是在SRING BOOT初始化时进行的,因此请注意不要越过RDS限制。这包括连接到数据库的其他服务。在这种情况下,连接数将是90+。

db.t2.small的当前限制是198(4GB的RAM)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.