概述
今天遇到系统的页面加载有点慢,然后就分析了一下页面的请求时间,虽然在 HTTP 的传输上花了不少时间,但是,同时响应时间也很长,于是就想看数据库的性能如何。本文将简单介绍一下如何不重启 MongoDB 开启查询日志。
Profiling Level
MongoDB 提供了三个 profiling 级别,用于控制查询日志的记录方式:
- Level 0: 关闭 profiling,不记录任何查询日志。适用于对性能影响敏感的场景。
- Level 1: 仅记录慢查询日志,即那些执行时间超过
slowms参数指定时间的查询。适用于需要监控性能瓶颈。 - Level 2: 记录所有查询日志,包括慢查询和快速查询。但对性能有一定影响。
slowms
slowms 参数用于定义慢查询的阈值。当 profiling 级别设置为1或更高时,执行时间超过 slowms 的查询就会被记录。
操作步骤
开启查询日志
使用MongoDB的命令行输入
> use myDb
switched to db myDb
> db.getProfilingLevel()
0
> db.setProfilingLevel(2)
{ "was" : 0, "slowms" : 1, "ok" : 1 }
> db.getProfilingLevel()
2
> db.getProfilingStatus()
{
"was" : 1,
"slowms" : 100,
"sampleRate" : 1
}
> db.system.profile.find().pretty()
分析日志
可以使用MongoDB官方推荐的免费可视化工具Compass分析日志。
关闭查询日志
使用以下命令关闭日志并清空日志数据。
db.setProfilingLevel(0)
db.system.profile.drop()