Mongodb 3.2 wiredTiger重写,定期100%磁盘利用率

时间:2017-11-29 20:27:37

标签: mongodb amazon-web-services wiredtiger

我的mongodb 3.2.18独立实例有128GB ram,wiredTiger和amazon ebs io1 ssd disk xfs格式。 100%的工作是写作。我在一个数据库中有5个集合,每个集合有大约8亿个文档。

每30-60秒,我发现iostat有10秒-15秒100%的磁盘利用率,我看到mongostat aw的相同数据增加到20-50,大约10-15s。我不认为我的写入变得非常高,但想知道这种周期性高磁盘利用率的根本原因是什么。它影响了我的写作速度很多。以下是统计数据。

normal statistics from iostat

100% disk utilization from iostat

mongostat aw increased to 40 for 10 seconds

2 个答案:

答案 0 :(得分:0)

虽然这不是一个正确的答案,但只是简单地发表评论太长了......

过去有很多JIRA问题,用户报告的行为有点类似,似乎与缓存驱逐相关(请注意,有些版本是早期版本,如3.0) - 这里只是其中的几个:

您的问题可能与上述问题完全不同,但我可以想象升级到更新版本的MongoDB可能会解决您的问题。此外,可能值得尝试临时增加您的AWS订阅并查看问题是否消失。

答案 1 :(得分:0)

我发现主要原因是"不必要的索引"更新时的集合

我正在使用下面的命令将一个数组列表的用户信息更新到集合" mongo_user" 。 id_time_dict是一个带有" post id"的字典。和"发布时间"

db_mongo.mongo_user.update({" _id":str(user_id)},{" $ addToSet":{" post":{&#34 ; $ each":id_time_dict}}})

我有"发布" field作为索引,导致iotop命令的重读。通常25m / s到120m / s的读取负载导致周期性的100%磁盘利用率。删除索引后,通常读取加载量为2-5m / s。