2011-05-04 49 views
0

我們在副本集中有三個服務器。舉例來說,ServerA是主要的,而ServerB和ServerC是次要的。在對環境進行壓力測試時,ServerA上的服務器負載增加到了4.00左右,而二級服務器仍然保持在0.00。壓力測試的URL目標不會對mongo進行任何寫入,但似乎讀取不會被分發到輔助節點。MongoDB未在副本集中分發讀取

我們使用官方的C#驅動程序。

ServerA日誌顯示許多正在打開的連接,lsn集條目和一堆「killcursors」命令 - 顯然它正在爲頁面提供服務。但ServerB和ServerC僅顯示來自Web服務器(其中四個)的初始連接,之後只有日誌中出現「lsn set」條目。幾分鐘後,最初的四個連接超時並關閉。

副本集處於完整工作狀態。我可以在小學上停止mongo,並且輔助人員會正確選出一個新的小學。從Web.config文件

我們的連接字符串:

<connectionStrings> 
    <add name="wellness.mongodb" connectionString="mongodb://serverA:27017,serverB:27017,serverC:27017/mydatabase?safe=true;replicaset=myreplicaset;slaveok=true" /> 
</connectionStrings> 

什麼是我們做錯了什麼?

+0

您使用的是官方C#驅動程序的正式版本? – 2011-05-04 18:52:15

+0

你必須指定slaveOK嗎? – murvinlai 2011-12-03 01:24:15

回答

1

連接字符串看起來OK。我會嘗試重現並回報。

+1

如果您在github上使用來自master分支的C#驅動程序的最新版本,我發現了一個導致所有讀取被髮送到同一服務器的錯誤。修復已經推到github上。如果您使用v1.0版本,那麼我需要進一步調查。 – 2011-05-04 19:13:35

+0

我們使用v1.0版本,但我們會嘗試從github上獲得最新版本。我會盡快跟進你。 – 2011-05-04 21:51:43

+0

當我使用v1.0驅動程序進行測試時,我看到正確地分佈在輔助節點上的讀取。僅當使用來自github的最新驅動程序源時,纔有一個錯誤(現在已修復)。 – 2011-05-04 21:55:12