以前,我有三臺機器:10.10.10.5,10.10.10.6和10.10.10.7
10.10.10.5運行:
- 配置數據庫
- mongoS
- shard3,shard4 mongod的過程(這些是主要在它們的碎片) 個
10.10.10.6運行:
- mongoS
- shard3 shard4 mongod的過程(這些是在它們的碎片次級)
10.10.10.7運行:
- mongoS
- shard3,shard4 mongod進程(這些是仲裁員)
我的應用程序連接到10.10.10.6 mongoS。
一切運行良好約一年。然後,10.5和10.6經歷了非常沉重的負荷,特別是10.6。 CPU使用率和平均負載非常高,因此我計劃在羣集中添加兩臺新機器。
我創建了兩個分片:shard1和shard2。新機10.10.10.8運行:
- shard1(主),shard2(二次)
- mongoS
新機10.10.10.9運行:
- shard1(二次),shard2(初級)
- mongoS
給老成員10.10.10.7我還添加了shard1,shard2仲裁者。
問題是,當我添加兩臺新機器(使用addShard命令)時,大約5個小時後他們完成了遷移(雖然我無法確定),然後10.10.10.6主機再次具有極端高負載,平均負載約90.5(4 cpus)。
同時有很多寫入和讀取請求到10.10.10.6 mongoS應用程序,但很少有數據或沒有數據寫入新的兩臺機器。我使用iostat來查找兩臺新機器中幾乎沒有io字節。
10.10.10.6爲什麼如此高負載?
此前,即使在高峯時間,最高負荷約爲30。5
所以,你們可以提出一些建議,如何解決負載問題並讓新機器啓動並運行?
編輯:我的環境的更多信息
10.5,10.6,10.7,10.8,10.9都具有相同的種源:4CPUS,6G紀念品,150G磁盤空間,所述netio是光纖。
Shard3 datasize = 16g和Shard4 datasize 15g。
我使用1.8.2
追加一個小問題,你認爲仲裁器neccesary我用命令:配置= {_ ID: 'shard3',成員:[{_ ID:0,主機: '服務器5:27019',優先:1},{_ id:1,host:'server6:27019'},{_ id:2,host:'server7:27019',arbiterOnly:true}]} server7擁有150g disckspace,所以如果我改變sever7如果更好地分擔10.6的閱讀壓力,從仲裁者到中等。 – Jack
您是否會將10.7上的所有仲裁進程轉換爲次級進程?如果這樣會有很大的開銷。如果將讀取首選項設置爲次級,則在該節點上擁有兩個輔助節點可能會幫助讀取壓力。這是因爲每個輔助可能是一個閱讀目標,而不僅僅是你現在擁有的單一目標。 –
親愛的安德烈,我還在廣告下添加了一條新評論,你看到了嗎? 謝謝 – Jack