2015-07-11 80 views
5

我最近更改了我的服務器設置以包含副本集。次要數據庫位於世界各地的多個地區,以減少延遲。問題是我認爲所有的讀取操作都是從主服務器完成的,而不是從輔助服務器完成的。我在遠離主數據庫的服務器上看到500ms +延遲,但與主服務器位於同一區域的登臺服務器的時間爲〜20ms。我如何檢查輔助閱讀或最近閱讀是否正常,或者我的設置是否丟失/錯誤? (我曾經嘗試都SECONDARY_PREFERRED,且最接近)使用次要讀取的Mongoose/MongoDB副本集

網址:

mongodb://1.1.1.1:27017,1.1.1.2:27017,1.1.1.3:27017,1.1.1.4:27017,1.1.1.5:27017/mydatabase 

我的選擇是這樣的:

"replSet": { 
    "rs_name": "myRepSet" 
    "readPreference": "ReadPreference.SECONDARY_PREFERRED", 
    "read_preference": "ReadPreference.SECONDARY_PREFERRED", 
    "slaveOk": true 
} 

貓鼬版本:3.8.x

回答

3

按照該項目的問題上gitHub有一個問題閱讀偏好似乎沒有哪裏是工作爲升級到([email protected] & [email protected])最新版本時,所有的讀取正在從主,而不是從輔助服務器完成。

根據評論,當您回滾到舊版本([email protected] & [email protected])時,此問題不會出現,讀取將開始進入輔助級別(集合級別)。此問題旨在在version 3.8.7中解決。

請參考下面的問題,對於相同的:

https://github.com/Automattic/mongoose/issues/1833 https://github.com/Automattic/mongoose/issues/1895

+0

我們實際上已更新爲Mongoose 4。x解決問題的一半,然後對自己的代碼進行了一些修改,將代碼延遲減少到20-60ms。儘管我們所做的工作正在進行,但我會給予這個答案的功勞。 – codephobia

0

而是二次罐頭你檢查最近的選項。我想這應該工作。 選中此鏈接。 http://docs.mongodb.org/manual/reference/read-preference/#nearest

+0

正如我所說的問題,我試着用同樣的結果這兩個選項。 – codephobia

+0

我的不好。一天結束,我的眼睛現在變得更糟。無論如何,你檢查這個鏈接。看起來值得一試。 http://emptysqua.re/blog/reading-from-mongodb-replica-sets-with-pymongo/ –

1

我如何檢查是否第二讀取或最近的工作,

如果你有機會到你的機器,一個簡單的方法來檢查哪些是被查詢是mongostat。只需登錄到您的服務器之一,並運行

mongostat --discover

這會給你在插入/查詢/更新基本輸出/刪除正在在副本集中每臺機器上運行。如果你有一個安靜的系統,很容易看到查詢被重定向到哪裏,所以你至少可以知道你的二手是否被擊中。

如果不是,您需要調查您的驅動程序設置。

+0

它似乎顯示節點之間的同步。每天有40,000次點擊到網站上,只有太多的數據顯示在那裏才能理解任何事情。 – codephobia

+1

太糟糕了,但可以理解。您可以登錄到您的其中一個副本,並在本地運行mongostat,然後查看「查詢」列下是否顯示任何內容。 – womp