2017-05-30 506 views
0

如果我使用mongorestore并将oplogreplay的numInsertionWorkersPerCollection> 1,它不会带来任何性能改进。我有一个8核心机器,64 GB RAM,我的完整oplog大小约为1 GB(在同一个集合上约有100万个请求)。所以我不认为硬件是这里的限制。请让我知道背后的原因。使用mongorestore for oplogreplay和--numInsertionWorkersPerCollection /同时使用mongorestore进行oplog重播

基本上,我正在比较mongorestore与sync(用于更新次级oplogs)。在同步的情况下,我们有默认的16名工作人员可以同时应用oplog,我也希望我也可以用mongorestore做同样的工作。

回答

1

numInsertionWorkersPerCollection仅在插入数据时起作用,不会重放opLog。

从mongorestore源代码看,oplogReplay是单线程的,所以并行重播不起作用。

+0

感谢您的信息! @JJussi :)。但是,你如何解释在同步过程中,与mongorestore oplog重播相比,oplog重播发生得非常快。 –

+0

为了支持我的说法,我进行了以下实验。我从副本集中断开辅助节点,然后在主节点上执行大约1 M操作。现在,我运行没有副本集的副本(即没有--replSet setName),并使用mongorestore oplog重放对其应用oplog。花了大约4分钟再次,我进行了相同的实验,但现在我只需再次连接次要的主要(即--replSet setName),大约需要1分钟。这种巨大差异背后的原因是什么? –

+0

不同的代码。不同的程序员。我没有检查有关opLog重播的mongod代码,但现在它可以并行运行。在wireTiger引擎时间之前,mongod也是相当多的单线程。 – JJussi

相关问题