2012-01-29 77 views
0

我们在三个数据中心有三个节点的Mongo副本集。它们中的两个数据和另一种是一个arbitrermongodb replica sets读取锁定

我们正在做在初级压力的写操作与锁定,所以我们正在做在副本节点(二次)读取的几乎100%。我们的问题是,由于这些写入,次要读取也很慢。

难道我们缺少什么?

+0

我想更好的解释是在这里:“并发如何影响辅助?”部分:http://docs.mongodb.org/manual/faq/concurrency/#how-does-concurrency-affect-secondaries以防万一有人在寻找更好的说明。 – Maziyar 2014-01-11 10:00:36

回答

1

我们正在做主要的紧张写入,几乎100%的锁定,所以我们正在副本节点(辅助)读取。我们的问题是,由于这些写入,次要读取也很慢。

当您执行写入主要,写入也必须在辅助上执行。所以中学和小学一样做着同样的工作。

所以,如果你对原100%锁定,您对二次100%锁定。

动读取到次级可能不会帮助,因为你的IO上的主要可能是完全锁定,无法跟上。

运行iostattop并找出其中的瓶颈。您可能需要电力,但这可能只是一个索引问题。

+0

谢谢,锁定是一种强制性,因为是一个重写模式。我们已经“解决”了在相同情况下分解彻底内核的问题。我们知道这不是建议的,但我们已经阅读是这种问题的解决方案,早期测试证明了这一点。 我现在的问题是:是否有任何替代Mongo或哪个是管理这种并发性的最佳dbsystem? (重和紧张的写入总是/读) – aartiles 2012-01-30 10:08:39

+0

Redis可能是值得调查的。它做出了一系列不同的折衷,你将被限制在关键价值。但是Redis的性能数字往往非常好,每次读/写所需的CPU就会更少。 Riak也可能是一个合理的选择,同样基于关键/价值是一个限制因素。我会从Redis开始,因为它是最有可能的人选。 – 2012-01-30 11:12:34

+0

另一件需要考虑的事情是您的读取将在另一个数据中心进行。这可能会导致这些读取速度很慢,因为这些读取距离很远。 – 2012-01-30 11:14:02