我正在使用Ruby 2.5运行时和RDS MySQL(目前为小型实例)在AWS Lambda上运行服务。已知限制大约为66个数据库连接,并且max_connections
由RDS计算并设置。扩大规模只能解决很小的问题,但是成本很高。
现在,常见的建议是在Lambda主函数之外初始化数据库,并保留该全局排序变量以备后用。 这样可以避免在每次Lambda调用时重新启动连接。这行得通,但实际上也使事情变得更加复杂。当它在后续调用中重用连接时,该Lambda函数的额外并发意味着正在汇总额外的连接。现在将其乘以50-100个函数,我们就注定了。
另一种解决方案似乎是将每个Lambda的最大并发/调用数减少到1左右。哪一个也不好。
长话短说:我已经习惯了使用连接池(mysql2 gem),它们非常完美。但是在这里我不能真正使用它们。现在,我正在研究是否可以在服务器上启动一个简单的“独立”服务,该服务的行为类似于MySQL代理/池-集成了连接池。
因此,所有Lambda函数都根据需要连接到池,这允许更多的传入连接,甚至可能是(数以万计)数千个,并且该池现在显然必须处理瓶颈方案-在我们的情况下-如果那意味着Lambda必须等待一点时间才能释放连接,那绝对没问题。
我认为MySQL Proxy(现在是MySQL Relay或其他功能)可以做到,但是没有。然后是ProxySQL,但是它以PHP为重点,而且似乎还有其他用途。
在进入的连接上是否没有任何伪装成MySQL服务器的东西,然后在内部具有连接池,通过该连接池将这些命令分发/重新路由到RDS?
Aurora不能用于此选项(旧项目,新项目已在使用Aurora)。
非常感谢任何帮助,非常抱歉,没有代码,但这更多地是关于使用哪种工具的信息。