我有一个数据库,其中包含大约100万个在队列中执行的作业记录。每天,约有5万个新工作被创建和执行。我启动了几十个aws现场实例,并由主管工作人员执行了工作(一次6个)。
同时数据库的总连接数为260,而rds mysql实例类型为t2.medium。如果没有工作要做或尚未创建工作,则工作人员将在几秒钟后退出,新的工作人员将再次检查是否有工作可用,依此类推。
我注意到当它们同时连接时会有一个很大的减慢,即查询可能需要8秒而不是20ms。然后,将所有实例都连接到数据库后,一切似乎又变好了。所以问题是,如何处理这个问题,以便数据库总是超级快?
我是否应该尝试同时启动工作人员并在工作人员退出之前添加随机睡眠?
此外,由于有许多读/写操作,我应该使用负载均衡器和读取副本来扩展数据库吗?
答案 0 :(得分:2)
速度下降可能是由您正在使用的实例类型引起的。 T2 family instances are burstable,这意味着在长时间的持续负载下,CPU积分余额将耗尽,实例将变慢。
您绝对应该将实例类型升级到另一个类(例如m5系列),以便在持续负载下实例的性能保持稳定。