我有Django在AWS Lambda上运行,连接到RDS上的MySQL。大多数时候一切都很好。
然而,如果一个峰值执行10000个并发请求,这将产生许多Lambda容器,每个容器打开一个数据库连接,最终将超过RDS连接限制。(根据https://server fault . com/questions/862387/AWS-rds-connection-limits)
在不丢失SQL的情况下将其扩展到Web规模的最佳策略(如果有的话)是什么。一些想法:
有没有办法限制AWS容器的数量来鼓励/强制重用而不是产生更多?
不
API 网关能否检测到将连接连接到 Lambda 的峰值和延迟?
不
MySQL/RDS读取副本的自由使用
这是您在不完全离开关系数据库的情况下的最佳选择。或者将您的Django应用程序移回更传统的EC2 Web服务器并使用数据库连接池。
从2019年12月开始,您可以通过使用RDS代理来解决并发lambda执行与MySQL RDS连接数的比例失调问题。
RDS代理实际上做的是连池(Lambda不能自己做),但是注意RDS代理有额外的成本。
ref:https://AWS . Amazon . com/blogs/compute/using-Amazon-rds-proxy-with-AWS-lambda/
2017年11月AWS会议后,http://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html说:
您可以选择设置函数的并发执行限制。
有关详细信息,请访问该页面。
在宣布每函数并发控制之前,我发布了以下答案:
您可以依赖AWS最大并发Lambda执行,那么如果您的RDS最大连接限制至少为1000,那么这不会是问题。换句话说,在RDS上的MySQL限制你之前,AWS将限制你的Lambda并发。根据实例大小的不同,1000对于MySQL上的最大连接数来说不是一个不寻常的值。
如果在RDS上使用默认的最大连接数,则必须至少使用一个db.m3.xlarge或db.r3.large(请参见AWS RDS中max_connections的值)。但是您可以更改参数组中的最大连接数(感谢@Michael-sqlbot对此信息的评论)。
如果你想限制你自己的特定 Django 应用程序的并发执行,我还有另一个想法。 注意:我没有尝试过这个,我只是想到了。
假设您希望不超过75个并发执行。
因此,如果您有 75 个 Lambda 函数正在运行,则第 76 个请求必须等到其中一个 Lambda 函数将值恢复回队列。
这种架构允许您将规模控制到您想要的任何最大并发量,最高可达AWS规定的每个区域1000的最大并发量。只需用不同数量的项目来填充SQS队列。您甚至可以增加或减少节流,而无需重新部署Lambda代码,只需在队列中添加或删除几个项目即可。
你也可以允许不同的Lambda函数有自己的“池”,因为例如你可能有不同的Django应用程序连接到它们自己的RDS实例。只需为每个“池”创建一个新的SQS队列,并确保不同的Lambda函数使用正确的SQS队列。
我认为存在这样一种风险,即如果任何Lambda在恢复其值到SQS队列之前中止,您会看到队列逐渐耗尽并最终变成空的。理想情况下,队列的长度会收缩并循环增长。但是如果长度骤降为零,它可能表明您的Lambda代码正在崩溃。您可能需要使用CloudWatch为此设置某种警报。
在“分析”菜单栏中点击“淹没模拟”,有绘制多边形和选择面选项,这里演示的是绘制多边形。 在三维地形上绘制一个区域作为模拟分析范围,弹出对话框,设置播放频率以及每次升高高度,在对话框中点击“淹没模拟”按钮,地图上水面开始上升。可以点击“暂停模拟”或“重新模拟”。可在对话框上部查看淹没模拟的最高点、最低点、淹没区域和淹没面积。淹没分析数据来源于内存中分级的DEM,精度有限,
在“分析”菜单栏中点击“淹没模拟”,有绘制多边形和选择面选项,这里演示的是绘制多边形。 在三维地形上绘制一个区域作为模拟分析范围,弹出对话框,设置播放频率以及每次升高高度,在对话框中点击“淹没模拟”按钮,地图上水面开始上升。可以点击“暂停模拟”或“重新模拟”。可在对话框上部查看淹没模拟的最高点、最低点、淹没区域和淹没面积。淹没分析数据来源于内存中分级的DEM,精度有限,
我正在使用Kafka Streams,我注意到它使我的kafka日志记录了很多日志消息,例如: 这真的很令人不安,因为我发现它会淹没日志,所以我看不到任何其他内容(也会消耗资源)。 为什么它发生在(一些)Kafka Streams内部主题上,而不是其他主题上? 我怎样才能禁用它?
就是这个情况,< br >第一次上AWS,第一次上K8s...< br >我们有一个微服务基础架构,< br >我们有jdk8的POD/container内存问题,所以我们迁移到jdk11-openj9内存管理,如果比以前好得多,现在的问题是一个奇怪的问题,一个微服务,它在分配的内存下工作正常,在非工作时间,在随机时间,今天凌晨5.03获得OOMKILL。此POD配置有QOS =保证,这是唯一一个
我正在使用一个数据集,其中包含与相结合的度量值,例如: 我试图检测和删除可能出现的潜在峰值,如度量值。 到目前为止,我发现了一些东西: > 这个数据集的时间间隔从15秒一直到25分钟,这使得它非常不均匀 峰的宽度无法事先确定 峰值高度与其他值明显偏离 时间步长的标准化只应在去除异常值后进行,因为它们会干扰结果 由于其他异常(例如,负值、平线),即使没有这些异常,也“不可能”使其变得均匀,因为峰值会
本文向大家介绍在C ++中查找峰值元素,包括了在C ++中查找峰值元素的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序来查找给定数组中的峰元素 峰值元素是大于周围元素的元素。让我们看看解决问题的步骤。 用伪数据初始化数组。 检查第一个元素和最后一个元素的峰值元素状况。 从第二个元素遍历数组。 检查当前元素是否大于上一个元素和下一个元素。 如果上述条件满足,则返回。 打印结果