MongoDB慢日志
Database Profile
Database Profiler收集有关正在运行的数据库命令,包括CRUD操作以及配置和管理命令。Profiler将收集的数据写入admin数据库下的system.profile的固定集合。Database Profiler默认情况是OFF的,可以在数据库或实例上启用Profiler
分析级别
level | 描述 |
---|---|
0 | 默认级别,profiler处于关闭状态并且没有任何数据 |
1 | 将超过slowms时间的操作记录在固定集合中 |
2 | 记录所有的操作数据 |
当前数据库设置分析级别并设置慢操作阈值(毫秒)
db.setProfilingLevel(1,{slowms:1000}) |
查看分析级别
> db.getProfilingStatus() |
- was表示当前的分析级别
- slowms表示慢操作阈值,以毫秒为单位
- sampleRate表示分析的慢操作百分比
为整个实例启用分析需要在启动时指定下列参数,或者在参数文件中指定operationProfiling
mongod --profile 1 --slowms 15 --slowOpSampleRate 0.5 |
无法在Mongos实例上启用profiler,要在分片环境启用profiler,必须为群集中每个实例启用profiler。从MongoDB 4.0开始可以在Mongos设置slowms和slowOpSampleRate来配置诊断日志
分析慢查询日志
查询最近的十条日志
db.system.profile.find().limit(10).sort( { ts : -1 } ).pretty() |
查询特定集合的操作
db.system.profile.find( { ns : 'mydb.test' } ).pretty() |
查询command外的操作
db.system.profile.find( { op: { $ne : 'command' } } ).pretty() |
查询特定时间范围内
db.system.profile.find({ |
分析查询结果
{ |
更改system.profile集合大小
由于system.profile集合是一个仅1M大小的固定集合,如果需要增加或减少该结合的大小,必须按照下列步骤操作
- 禁用分析
db.setProfilingLevel(0)
- 删除system.profile集合
db.system.profile.drop()
- 创建一个新的system.profile集合
db.createCollection("system.profile" , {capped : true , size : 4000000})
- 重新启用分析
db.setProfilingLevel(1)
如果修改的secondary节点的system.profile大小,需要将其以standalone模式启动再进行修改
更多参考内容请查看链接:Database Profiler
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DBA学习记录!