在仪表板中,我看到数据库实例当前有22个打开的连接,阻止了与错误的新连接:
剩余的连接插槽保留用于非复制超级用户连接。
我从EC2实例上运行的网络服务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();
我可以在代码中执行其他操作吗?
我应该在数据库管理中做些什么吗?
有没有办法定期关闭连接?
答案 0 :(得分:19)
亚马逊必须根据每种型号的权利设置连接数,以获得一定数量的内存和连接
MODEL max_connections innodb_buffer_pool_size
--------- --------------- -----------------------
t1.micro 34 326107136 ( 311M)
m1-small 125 1179648000 ( 1125M, 1.097G)
m1-large 623 5882511360 ( 5610M, 5.479G)
m1-xlarge 1263 11922309120 (11370M, 11.103G)
m2-xlarge 1441 13605273600 (12975M, 12.671G)
m2-2xlarge 2900 27367833600 (26100M, 25.488G)
m2-4xlarge 5816 54892953600 (52350M, 51.123G)
但是如果您愿意,可以通过
将最大连接大小更改为自定义值来自RDS控制台>参数组>编辑参数,
您可以将max_connections参数的值更改为自定义值。
为了定期关闭连接,你可以设置一个像这样的cron作业。
select pg_terminate_backend(procpid)
from pg_stat_activity
where usename = 'yourusername'
and current_query = '<IDLE>'
and query_start < current_timestamp - interval '5 minutes';
答案 1 :(得分:4)
您可以更改RDS实例的Parameters Group
中的最大连接数。尝试增加它。
或者您可以尝试升级您的实例,因为最大连接数设置为{DBInstanceClassMemory/31457280}
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html
答案 2 :(得分:3)
我正在使用Amazon RDS,SCALA, Postgresql&amp;浮油即可。首先 - RDS中可用连接的数量取决于可用的 RAM 的数量 - 即RDS实例的大小。最好不要更改默认的连接数。
您可以通过在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内存)
答案 3 :(得分:2)
您可以在参数组idle_in_transaction_session_timeout
中进行更改以删除空闲连接。
idle_in_transaction_session_timeout(整数)
使用一个已空闲的未完成交易终止任何会话 大于指定的持续时间(以毫秒为单位)。这允许任何 该会话持有的锁将被释放,并且连接插槽 被重用;它还允许仅对该事务可见的元组 吸尘。有关更多详细信息,请参见第24.1节。
默认值0禁用此功能。
AWS RDS中的当前值为86400000
,当转换为小时(86400000/1000/60/60)时,则为24小时。