2012-01-29 43 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