我正在使用mongostat和对mongodb进行一些分析mongotop
我跑mongotop:
$> mongotop 30
Run Code Online (Sandbox Code Playgroud)
和mongostat简单地说:
$> mongostat
Run Code Online (Sandbox Code Playgroud)
产出是:
Mongotop:
ns total read write 2012-11-23T01:32:37
sapi.Socket 1222ms 1222ms 0ms
sapi.ChargeSpot 999ms 999ms 0ms
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
问题:
对于mongotop输出,因为我运行它报告30秒间隔,例如sapi.Socket总共1222ms读取意味着:
在30秒的时间间隔内,从集合sapi.Socket执行读取查询花费了1222ms
这意味着在30秒内,mongo只忙于2,221ms(1,222ms + 999ms)处理读取查询,换句话说,mongo在其他27秒内空闲?
小智 2
每秒的所有操作指标都将是根据特定服务器配置和集群架构的相对指标。然而,您并没有使用 5k 查询来推送 Mongo。
可以使用的免费工具是数据库分析器。在这种情况下,探查器会将所有操作捕获到名为 system.profile 的系统集合中。然后,您可以进一步了解各个查询及其执行情况。
//仅针对名为 dfl 的数据库和名为 test 的集合进行查询操作(而不是插入、删除或命令)的诊断示例。
db.system.profile.find({op: {$eq : '查询'}, ns: 'dfl.test'})
//检查你的分析器状态 db.getProfilingStatus()
//将分析器设置为所有操作 db.setProfilingLevel(2)
| 归档时间: |
|
| 查看次数: |
4482 次 |
| 最近记录: |