我有一个数据库,里面有大约一百万条作业记录,它们在一个队列中执行。每天,大约有50000个新的工作岗位被创造和执行。我启动了几十个aws现场示例,并与主管工人(一次6个)一起执行作业。
同时数据库连接总数为260,rds mysql示例类型为t2.medium。当没有工作要做或者工作还没有创造出来的时候,工人们会在几秒钟后离开,新工人们会再次检查工作是否可用,等等。
我注意到,当所有示例同时连接时,速度会大大减慢,即一个查询可能需要8秒而不是20毫秒。然后,当所有示例都连接到数据库时,一切看起来又正常了。所以问题是,我如何处理这个问题,使数据库总是超快速的?
我是否应该尝试不同时启动工人,并在工人退出前添加随机睡眠?
另外,由于存在大量的读/写操作,我是否应该使用负载均衡器和读取repblicas来扩展数据库?
1条答案
按热度按时间vecaoik11#
减速可能是由您正在使用的示例类型引起的。t2系列示例是burstable的,这意味着在长时间的持续负载下,cpu信用余额将耗尽,示例将变慢。
您一定要将示例类型升级到另一个类(例如m5系列),这样示例的性能在持续的负载下会保持稳定。