同时处理数百个 RDS mysql db

Handing hundreds of RDS mysql db at same time

我有一个数据库,其中包含大约一百万个在队列中执行的作业记录。每天,大约有 50 000 个新工作被创建和执行。我启动了数十个 aws spot 实例,作业由主管工作人员执行(一次 6 个)。

数据库同时连接总数为260,rdsmysql实例类型为t2.medium。当没有任务可做或任务尚未创建时,worker 将在几秒后退出,新的 worker 将再次检查是否有任务可用等等。

我注意到当它们同时连接时会出现严重的减速,即查询可能需要 8 秒而不是 20 毫秒。然后,一旦所有实例都连接到数据库,一切似乎又好了。所以问题是,我该如何处理才能使数据库始终超快?

我应该尝试不同时启动 worker 并在 worker 退出前添加随机休眠吗?

此外,由于有很多 Read/Write 操作,我是否应该使用负载平衡器扩展我的数据库并读取 repblicas?

速度变慢可能是由您使用的实例类型引起的。 T2 family instances are burstable,这意味着在长时间的持续负载下,CPU 积分余额将耗尽,实例将变得更慢。

您绝对应该考虑将您的实例类型升级到另一种 class(例如 m5 系列),以便实例的性能在持续负载下保持稳定。