解释Mongostat和Mongotop输出

时间:2012-11-23 01:51:35

标签: mongodb profiling

我正在使用mongostatmongotop

对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秒内,mongo才忙 2,221ms(1,222ms + 999ms)处理读取查询,换句话说, mongo在其他27秒内闲置了吗?

  • 对于mongostat输出,看起来mongo正在处理大约5K个查询 每秒,这是推动mongo有点或mongo能够做多少 更多?查询是基本的(通过索引键查找)

2 个答案:

答案 0 :(得分:2)

每秒所有操作指标将成为您的特定服务器配置和群集架构的相对指标。但是你没有用5k查询推送Mongo。

要使用的免费工具是数据库分析器。在这种情况下,探查器将捕获名为system.profile的系统集合中的所有操作。然后,您可以更深入地了解各个查询及其执行方式。

//仅针对名为dfl的// DB和名为test的集合进行查询操作的诊断示例,而不是插入或删除或命令。

db.system.profile.find({op:{$ eq:' query'},ns:' dfl.test'})

//检查您的探查器状态 db.getProfilingStatus()

//将探查器设置为所有操作 db.setProfilingLevel(2)

答案 1 :(得分:0)

为了进行效果调整,我们看到了explainhintprofile选项。但是,如果我们想看一个程序中的高级别并找出它花费的时间,我们将如何做到这一点呢?我们以Mongotop命令Unix命名top。要查看shell上的日志,请使用命令mongotop seconds - 其中seconds是打印下一个日志条目的秒数。

例如:mongotop 3