[英]Interpreting Mongostat and Mongotop output
我正在使用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秒的時間間隔內,從集合sapi.Socket執行讀取查詢花費了1222ms
這意味着在30秒內,mongo只忙於2,221ms(1,222ms + 999ms)處理讀取查詢,換句話說,mongo在其他27秒內空閑?
每秒所有操作度量標准將是每個特定服務器配置和群集體系結構的相對度量標准。 但是你沒有用5k查詢推送Mongo。
一個免費的工具是DB分析器。 在這種情況下,探查器將捕獲名為system.profile的系統集合中的所有操作。 然后,您可以對單個查詢以及它們的執行方式進行更深入的了解。
//僅針對名為dfl的// DB和名為test的集合進行查詢操作的診斷示例,而不是插入或刪除或命令。
db.system.profile.find({op:{$ eq:'query'},ns:'dfl.test'})
//檢查你的探查器狀態db.getProfilingStatus()
//將探查器設置為所有操作db.setProfilingLevel(2)
對於性能調優,我們已經看到了explain
, hint
和profile
選項。 但是,如果我們想要了解一個程序中的高級別並找出它花費時間的位置,那我們該怎么做呢? 我們有Mongotop
,以Unix
命令top
命名。 要查看shell上的日志,請使用命令mongotop seconds
- 其中seconds
是打印下一個日志條目的秒數。
例如: mongotop 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.