【发布时间】:2019-03-21 06:49:38
【问题描述】:
我有一个数据库,其中包含大约一百万条在队列中执行的作业记录。每天,大约有 50 000 个新工作岗位被创建和执行。我启动了数十个 AWS Spot 实例,并由主管工作人员执行作业(一次 6 个)。
同时数据库连接总数为260,rds mysql实例类型为t2.medium。当没有作业要做或尚未创建作业时,工作人员将在几秒钟后退出,新的工作人员将再次检查工作是否可用,依此类推。
我注意到,当它们同时连接时,速度会大大降低,即查询可能需要 8 秒而不是 20 毫秒。然后,一旦所有实例都连接到数据库,一切似乎又好了。那么问题来了,我该如何处理这个问题才能让数据库总是超级快呢?
我是否应该尝试不同时启动工人并在工人退出之前添加随机睡眠?
另外,由于有很多读/写操作,我是否应该使用负载平衡器和读取副本来扩展我的数据库?
【问题讨论】:
-
MySQL 不是最适合作业队列的。既然您在亚马逊上,您是否尝试过使用SQS?
-
是的,SQS 和批处理似乎是不错的选择,但对于我需要做的事情来说太基础了。
标签: mysql database amazon-web-services amazon-rds supervisord