在Lambda和RDS Proxy中通过NestJS和代理拆分避免连接固定

在Lambda和RDS Proxy中通过NestJS和代理拆分避免连接固定

💡 原文英文,约700词,阅读约需3分钟。
📝

内容提要

在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?

通过在特定仓库中注入新数据源,确保有问题的查询使用新的代理。

🏷️

标签

➡️

继续阅读