我正在使用mongostat
和mongotop
我跑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秒内闲置了吗?
答案 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)
为了进行效果调整,我们看到了explain
,hint
和profile
选项。但是,如果我们想看一个程序中的高级别并找出它花费的时间,我们将如何做到这一点呢?我们以Mongotop
命令Unix
命名top
。要查看shell上的日志,请使用命令mongotop seconds
- 其中seconds
是打印下一个日志条目的秒数。
例如:mongotop 3