网站首页 文章专栏 mongodb Profiling(分析器) 之慢查询详解在副本集或分片集开启
在 版本: 4.0.6 以后,mongos 虽然还是不支持 profilling 功能 , 但可以开启慢查询 记录功能。只需要在 mongos 的启动参数上添加,记录的毫秒值( slowms )和 记录概率 ( sampleRate )
字段 | 类型 |
说明 |
profile |
int |
0 : 关闭 1 : 开启慢查询 2 : 开启所有操作收集数据。 |
slowms |
int |
慢速操作时间阈值,以毫秒为单位。运行时间超过此阈值的操作被视为慢操作。默认: 100ms |
sampleRate |
double |
取值范围(0 ~ 1) 包含0 和 1 ,表示分析或记录的慢速操作的百分数。比如 1.0 为100% 的查询操作都会分析 默认: 1.0 |
副本集开启的 慢查询
从 4.0.6 版本,慢查询记录日志,只保存在 secondaries 节点上。
在 mongodb 单实例 、副本集、分片集上开启慢查询:
单实例:
# 开启分析 # 慢阀值: 20 毫秒 # 分析 42% 的查询操作 db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 })副本集:
副本集设置 的 慢查询 记录不受下列设置影响
1. 不受 slowOpSampleRate 设置影响,意思是说:会对 100% 的查询操作分析
2. 不受logLevel/systemLog.verbosity级别(或systemLog.component.replication.verbosity级别)的影响;也就是说,对于oplog条目,辅助日志只记录慢的oplog条目。增加logLevel级别不会记录所有oplog条目。
3. 不受 profiling level 设置控制。 profile 设置为0 。但 slowms 设置了,就可以
副本集 开启慢查询日志:
db.setProfilingLevel(1, { slowms: 20 })
分片集开启:
db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 })
要查看当前分析器(profilling) 开启情况,可以使用 db.getProfilingStatus()
db.system.profile.find()