【发布时间】:2014-03-13 02:12:51
【问题描述】:
使用 MongoDB 的 Java 驱动程序我试图将 25,637,015 个文档插入 MongoDB 集群。这些文档是从 SQL Server 数据库中检索出来的,并以多线程方式(8 个并发线程)插入到最初为空的 MongoDB 分片集合(称为 col)中。这个过程花了2个小时。有趣和令人费解的是,在节目结束后,某些事情持续了超过 6(!)小时。
首先,我的集群节点计算机中的硬盘继续疯狂地旋转。 其次,更重要的是,以不到一秒的时间间隔运行的 db.col.count() 继续呈现不同的结果:
mongos> db.col.count()
25694898
mongos> db.col.count()
25694917
mongos> db.col.count()
25695154
mongos> db.col.count()
25695207
mongos> db.col.count()
25695422
mongos> db.col.count()
25695493
mongos> db.col.count()
25696024
mongos> db.col.count()
25696130
mongos> db.col.count()
25698565
mongos> db.col.count()
25695145
所有这些计数器在上升和下降时更有趣的是超过插入文档的数量:25,637,015。如果它们更小,我可以推测文档进入某种队列并且正在缓慢处理,但更大?!
就像我说的,六个小时后一切都稳定了:硬盘停止旋转,mongos> db.col.count() 终于呈现正确的数字:25637015。
如果它很重要。我的分片集群中有 2 个副本集。每个副本集有 2 个数据节点和 1 个仅仲裁节点。我运行 3 个配置服务器。和 3 个 mongos。全部分布在 Windows 主机上运行的 4 个 Centos 盒子(虚拟)之间。源 SQL Server 位于另一台物理计算机上。在插入期间或之后的任何时间都没有禁用平衡器。我的 MongoDB 版本是 2.2.6 64 位。
知道 Java 程序完成插入后 6 小时 MongoDB 在做什么吗?为什么计数这么高?
谢谢
【问题讨论】:
标签: mongodb