执行大量写操作时MongoDB游标超时

Bry*_*yan 8 mongodb

我们有一个包含2个副本集的集群,每个集合有3个服务器.单个集合被分片.我们还有一些我们每天使用的更多(8+)个系列.大部分数据都在分片集合中,其中包含近1亿条记录.

最近我们添加了获取100x之前获得的数据的要求,我们需要将其写入mongodb.已设置守护程序以执行使数据库保持最新所需的写入.该脚本每秒执行超过200次写入,大多数写入所有单独的集合.

由于写入量很大,我们无法为分析目的执行大量读取操作.接收客户端和服务器端的游标超时组合("未找到游标").

我们已尝试对读取执行限制/跳过方案,但问题仍然存在.解决这个问题的最佳方法是什么,因为我们需要大量的写入,少量但大量的读取?

Gat*_* VP 3

通常,在这种情况下,您需要开始查看导致时间的查询。然后您需要查看硬件以了解受到的压力。

  1. 这些查询是否已正确索引?
  2. 索引有多大?它们适合 RAM 吗?
  3. 您能否提供一些有关瓶颈所在的详细信息?
  4. 你锁定IO了吗?
  5. 您的处理器是否全速运行?

另外,日志中是否有任何异常情况?

基本上,我们需要确保您: 1. 正确构建系统来处理查询 2. 正确配置系统来处理数据量