一个电子商务网站使用 Lambda 函数将订单写入 Amazon RDS for MySQL 数据库。该服务必须立即返回订单确认信息。在一次营销高峰期间,运维团队发现 RDS 出现“连接过多”错误,尽管数据库集群指标显示 CPU 和内存状况良好。开发人员应该如何解决连接错误?
选择一个答案
点击一个选项来检查您的答案。
正确答案: 在 Lambda 处理程序外部打开数据库连接。使用 Amazon RDS Proxy 而不是让 Lambda 直接连接到数据库。.
为什么这是答案
正确答案是使用 Amazon RDS Proxy。Lambda 函数的无服务器特性意味着每次调用都可能建立新的数据库连接。在高并发场景下,这会导致数据库连接数迅速耗尽,即使数据库资源(CPU、内存)充足,也会出现“连接过多”错误。RDS Proxy 能够管理和复用数据库连接,有效地解决连接池问题,并处理故障转移,从而提高应用程序的弹性和可伸缩性。 其他选项的错误在于: 增加 maxuserconnections 并重启数据库集群:这只是提高了数据库允许的最大连接数,但没有解决 Lambda 连接管理效率低下的根本问题,在高并发下仍可能再次耗尽连接。 使用 SQS FIFO 队列缓冲订单:虽然 SQS 可以解耦和缓冲请求,但它引入了延迟,不符合“立即返回订单确认信息”的需求。此外,FIFO 队列限制了吞吐量,可能成为瓶颈。 将 Lambda 并发数设置为等于或小于可用数据库连接数:这是一种粗略的限制方法,但无法动态适应流量变化,且可能过度限制 Lambda 的扩展能力,导致请求积压。同时,它也没有解决 Lambda 连接效率低的问题。
通过考试 — 无需无休止地寻找答案
将本次考试的所有验证问题和解释集中在一处,节省数小时的准备时间。1,000+ 认证 · 20+ 语言 · 免费开始。
更快通过考试 → 无需银行卡