MongoDB 4.4 CE profiling设为0仍输出慢查询日志原因咨询
原因说明
db.setProfilingLevel() 控制的是MongoDB内置性能分析器(Profiler)向system.profile集合写入数据的逻辑,和慢查询日志的打印规则是两套独立的控制体系,设置等级为0仅代表停止记录Profiler数据,不会禁用慢查询日志输出。出现你描述的现象,常见原因如下:
- 慢查询日志默认单独由实例参数控制,只要操作耗时超过
slowms阈值就会打印到mongod.log,和Profiling等级无关。你命令返回结果中slowms为100,说明100ms以上的慢操作都会继续被记录。 - 如果你的部署是副本集或分片集群,仅在单节点执行该命令不会影响其他节点的慢查询日志打印规则,其余节点仍会正常记录慢操作。
- MongoDB 4.4版本默认会额外记录触发全表扫描(COLLSCAN)的操作,即便这类操作耗时未达到
slowms阈值,只要扫描/返回的文档数达到标准,也会被写入慢查询日志,该逻辑同样不受Profiling等级控制。
关闭慢查询日志的方法
如果需要彻底停止慢查询日志打印,可执行以下运行时命令即时生效:
db.adminCommand({ setParameter: 1, slowOpThresholdMs: -1 })
如需永久生效,修改mongod.conf配置文件添加如下配置后重启实例即可:
operationProfiling: slowOpThresholdMs: -1
内容的提问来源于stack exchange,提问作者realtebo
相关产品推荐
相关产品推荐

