在 Jmeter 板中,我看到当前有22个打开的DB示例连接,阻塞新连接并显示错误:
剩余的连接插槽保留用于非复制超级用户连接。
我从EC2示例上运行的Web服务API访问DB,并始终保持以下最佳实践:
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.我可以在代码中做其他事情吗?
1.我应该在DB管理中做些别的事情吗?
1.是否有办法定期关闭连接?
4条答案
按热度按时间bbmckpt71#
Amazon必须根据每个模型要求一定数量内存和连接的权利来设置连接数
但如果需要,您可以通过以下方式将最大连接大小更改为自定义值
从RDS控制台〉参数组〉编辑参数,
可以将max_connections参数的值更改为自定义值。
为了定期关闭连接,您可以设置一个cron作业,类似于以下内容。
n53p2ov02#
我正在使用Amazon RDS、SCALA、Postgresql & Slick。首先-RDS中可用连接的数量取决于可用RAM的数量-即RDS示例的大小。最好不要更改默认连接数。
您可以通过在RDS DB示例上执行以下SQL语句来检查最大连接数:
检查您的SPRING配置,查看您正在生成多少线程:
所有的连接都是在SRING Boot 初始化时建立的因此请注意不要超过RDS限制。这包括连接到DB的其他服务。在这种情况下,连接数将超过90。
db.t2.small的当前限制为198(4GB内存)
gr8qqesn3#
可在参数组
idle_in_transaction_session_timeout
中进行更改,以删除空闲连接。事务会话超时中的空闲(整数)
终止任何具有打开事务的会话,如果该打开事务的空闲时间超过指定的持续时间(毫秒)。这将允许释放该会话持有的任何锁并重用连接槽;它还允许清空只对该事务可见的元组。2关于这一点的更多细节,请参见24. 1节。
默认值0禁用此功能。
AWS RDS中的当前值为
86400000
,转换为小时数(86400000/1000/60/60)时为24小时。guicsvcw4#
您可以在
Parameters Group
中更改RDS示例的最大连接数。请尝试增加它。或者,您也可以尝试升级示例,因为最大连接数已设置为{DBInstanceClassMemory/31457280}
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html