我正致力于调整AWS RDS(Postgres)性能。
使用当前设置(默认),
db.t2.micro
max_connections:{DBInstanceClassMemory / 31457280} // =>大约34个连接
我使用Gatling运行了性能测试,有100个并发请求(一个请求一个连接)。报告显示,78个成功请求,22个请求失败。
我几乎没有问题:
1 /当max_connections为34时,RDS如何支持多达78个连接?
2 /当请求数超过max_connections时,有没有动态的方法来调整max_connections?
注意:我知道如何通过硬编码更改max_connections的值。
答案 0 :(得分:0)
1)在任何时间点,如果并发连接数> max_connections,RDS将针对新请求响应"too many connections"
错误,直到它能够释放已存在的连接。服务器拒绝任何过多的连接尝试。因此,当您使用Gatling运行性能测试时,请检查数据库( 登录Postgres sql并使用查询检查 ),建立多少个连接来处理请求。
2)就动态更改max_connections参数而言,max_connection
是Postgres中的静态参数,这意味着在该参数生效之前需要重新启动数据库实例。但在MySQL中,它是一个动态参数。我建议您不要考虑在生产环境中动态修改此参数值的这种方法。但是如果你真的想动态地改变它以用于测试目的,你可以尝试下面的(未经测试的)方法:
创建具有条件的云观察警报MaxDbConnection
dbconnections> 25(以t2.micro为例)。
专门为上述警报创建一个SNS主题并将其添加到下面
MaxDbConnection
闹钟的操作部分。
创建一个lambda函数并选择上面创建的SNS主题 它的触发器。
在lambda函数中,您可以编写一个逻辑来使用modify-db-parameter-group
方法使用您的任何sdk修改max_connection参数
选择。此外,验证是否应用了更改
DescribeDBParameters
方法。