2015-06-22 168 views
3

我們在副本中有3個實例。主要有2核CPU和4 GB RAM。次要1核CPU和4 GB RAM。具有1個核心CPU和2 GB RAM的仲裁器。帶有WiredTiger的MongoDB 3:高CPU負載

第一測試:

mongodb的-ORG-服務器2.6.10-1.x86_64

logpath=/var/log/mongodb/mongod.log 
logappend=true 
fork=true 
dbpath=/mnt/mongo 
pidfilepath=/var/run/mongodb/mongod.pid 

和第二測試:mongodb的-ORG-服務器3.0.4-1.x86_64

processManagement: 
    pidFilePath: "/var/run/mongodb/mongod.pid" 
    fork: true 
storage: 
    dbPath: "/mnt/mongo/" 
    engine: "wiredTiger" 
    wiredTiger: 
     collectionConfig: 
      blockCompressor: none 
     engineConfig: 
      cacheSizeGB: 2 
      journalCompressor: none 
     indexConfig: 
      prefixCompression: false 
systemLog: 
    destination: file 
    path: "/var/log/mongodb/mongod.log" 
    logAppend: true 
replication: 
    replSetName: testrepl 

CPU使用率:http://i.imgur.com/Nmj021g.png

在相同負載測試我們對MongoDB的2個CPU負載3與WiredTiger引擎。

MongoDB的統計:http://i.imgur.com/cxrfUIC.png

所以,問題是爲什麼MongoDB的3 WiredTiger使用2倍以上CPU? WiredTiger是否正常?數據庫中的數據在測試之間沒有改變。兩次都有相同的負載測試場景。

回答

1

[編輯:答案討論一般WiredTiger,但不是專門針對這個問題。見評論。]

是的,這是正常的。 WiredTiger compresses the data,成本CPU。建議提供足夠的CPU,因爲使用WiredTiger時,CPU會成爲瓶頸。請參閱更多performance tips

以我們爲例,在相同的MMAPv1(舊存儲引擎)和WiredTiger服務器之間,CPU使用率增加了約2倍,而數據存儲容量減少了3倍-5倍。數據也被壓縮在RAM中,因此您可以將更多索引/緩存放入相同數量的RAM中。

+0

壓縮似乎在上面的例子中被關閉:'blockCompressor'爲'none','journalCompressor'爲'none',並且'prefixCompression'爲'false'。 –

+0

我的壞,沒有注意到。這可能是WiredTiger如何工作的一些細節,可能未針對運行W/O壓縮進行優化。我建議[提交bug](https://jira.mongodb.org/secure/Dashboard.jspa)。 –

+0

是的,它的確很好奇。通常情況下,壓縮是一種性能優勢,所以我建議再次運行測試並打開精簡壓縮。我敢打賭,這有一個改進。 –