2012-11-23 16 views
5

我使用mongostatmongotop口譯Mongostat和Mongotop輸出

做有關MongoDB的一些剖析我跑mongotop:

$> mongotop 30 

和mongostat簡單:

$> mongostat 

輸出爲:

Mongotop:

    ns  total  read  write  2012-11-23T01:32:37 
      sapi.Socket  1222ms  1222ms   0ms 
     sapi.ChargeSpot  999ms  999ms   0ms 

Mongostat:

insert query update delete getmore command flushes mapped vsize res faults   locked db idx miss %  qr|qw ar|aw netIn netOut conn  set repl  time 
    0 5351  0  0  0  1  0 608m 3.67g 64m  0   sapi:0.0%   0  0|0  1|0 569k  1m 63 capi-rs PRI 12:32:41 
    0 4189  0  0  0  1  0 608m 3.67g 64m  0 knightsbridge:0.0%   0  0|0  0|0 499k 308k 63 capi-rs PRI 12:32:42 

問題:

  • 對於mongotop輸出,因爲我跑它上30秒 間隔報告,例如不sapi.Socket總1222ms的讀取意味着:

    在30秒的時間間隔

    ,1222ms花在執行從集合sapi.Socket讀取查詢

    這將意味着在30秒蒙戈只是忙for 2,221ms(1,222ms + 999ms)處理讀取查詢,換句話說, mongo在另一個27秒內空閒?

  • 對於mongostat輸出,它看起來像mongo每秒鐘處理大約5K查詢 ,這是推mongo一點還是mongo能夠多 更多?查詢是基本的(通過索引鍵查詢)
+1

看着mongostat你不推這個蒙戈實例在所有。在不同的服務器上或使用不同的數據時,限制可能會非常不同。 –

+0

那麼我的解釋是否正確? mongo正在忙着查詢或3秒鐘,並在另外27秒鐘閒置? – Dzhu

+0

@Dzhu,Asya Kamsky說的+1:我在工作場所使用的Mongo數據庫通常每秒鐘查詢大約12,000個查詢。除非你經常看到大約15K個查詢,否則我不會開始擔心。 –

回答

2

所有每秒操作度量將成爲您的特定服務器配置和羣集體系結構的相對度量。然而,你不會推動5k查詢的Mongo。

免費使用的工具是DB分析器。分析器將在這種情況下將所有操作都捕獲到名爲system.profile的系統集合中。然後,您可以更深入地瞭解各個查詢以及它們的表現。

//針對名爲dfl的數據庫和名爲test的集合的僅查詢操作(不插入或刪除或命令)的診斷示例。

db.system.profile.find({OP:{$ EQ: '查詢'},NS: 'dfl.test'})

//檢查探查狀態 db.getProfilingStatus()

//設置探查到的所有操作 db.setProfilingLevel(2)

0

對於性能調整,我們已經看到explainhintprofile選項。但是如果我們想看一個程序中的高層次,並確定它花在哪裏的時間,我們該怎麼做?我們有Mongotop,以Unix命令top命名。要查看shell使用命令mongotop seconds上的日誌 - 其中seconds是應在後面打印下一個日誌條目的秒數。

例如爲:mongotop 3