内容提要
在Lambda与RDS Proxy和Aurora架构中,Lambda并发超过1000导致数据库连接异常。通过创建新的RDS Proxy并调整NestJS配置,将问题API的连接重定向至新Proxy,成功稳定了Lambda并发,避免了Aurora连接限制的超出。
关键要点
-
在Lambda与RDS Proxy和Aurora架构中,Lambda并发超过1000导致数据库连接异常。
-
Aurora连接限制为2000,尝试通过AWS服务配额增加并发限制未能解决根本问题。
-
RDS Proxy的数据库连接数超过4000,怀疑是连接固定导致的问题。
-
发现某些API的查询文本大小超过100KB,确认连接固定是原因。
-
为了解决问题,将有问题的API的数据库连接重定向至新的RDS Proxy。
-
创建新的RDS Proxy并为其设置单独的数据库连接配置。
-
在NestJS中使用TypeOrmModule.forRootAsync配置两个数据源,一个为默认数据源,另一个为新RDS Proxy。
-
为两个代理创建了单独的数据库配置。
-
通过在特定仓库中注入新数据源,确保有问题的查询使用新的代理。
-
通过这些更改,成功稳定了Lambda并发,避免了Aurora连接限制的超出。
延伸问答
Lambda并发超过1000时会出现什么问题?
会导致数据库连接异常,无法超过Aurora的连接限制2000。
如何解决Lambda与RDS Proxy的连接固定问题?
通过创建新的RDS Proxy并将有问题的API连接重定向至新Proxy来解决。
在NestJS中如何配置多个数据源?
使用TypeOrmModule.forRootAsync配置两个数据源,一个为默认数据源,另一个为新RDS Proxy。
RDS Proxy的连接限制是什么?
RDS Proxy的数据库连接数超过4000,但连接限制设置为80%的DB最大值,即1600。
为什么会出现连接固定现象?
当查询文本大小超过16 KB时,代理会将会话固定到当前连接,导致连接固定现象。
如何确保特定查询使用新的RDS Proxy?
通过在特定仓库中注入新数据源,确保有问题的查询使用新的代理。