Docs 主页 → 开发应用程序 → MongoDB Manual
db.setProfilingLevel()
定义
db.setProfilingLevel(level, options)
5.0 版本中的更改。
对于
mongod
实例,该方法可启用、禁用或配置数据库分析器。分析器捕获并记录正在运行的mongod
实例上的写入操作、游标和数据库命令性能的数据。如果分析器被禁用,该方法将配置如何将慢操作记录到诊断日志中。注意
使用
db.setProfilingLevel()
对分析级别所做的更改不会保留。当服务器重新启动时,它会恢复为0
(默认值),或者由operationProfiling.mode
设置或--profile
命令行选项设置的值。如果数据库分析器级别为
1
或2
(具体来说,数据库分析器已启用),则slowms和sampleRate会同时影响分析器和diagnostic log
的行为。如果数据库分析器级别为
0
(具体来说,数据库分析器已禁用),则slowms和sampleRate仅影响诊断日志。使用
mongos
实例,该方法设置slowms
、sampleRate
和filter
配置设置,从而配置如何将操作写入诊断日志。您无法在mongos
实例上启用数据库分析器,因为mongos
没有分析器可以写入的任何集合。对于mongos
实例,profile
等级必须为0
。您可以在 和
mongod
mongos
实例上指定 筛选器 ,以控制分析器记录哪些操作。当您为分析器指定filter
时, slowms 和 sampleRate 选项不会用于分析和慢速查询日志行。db.setProfilingLevel()
提供了profile
命令的封装器。log file
从 MongoDB 开始。 中,使用profile
命令或db.setProfilingLevel()
包装器方法对 50数据库分析器level
slowms
、sampleRate
、 或 所做的更改会记录在 中。filter
语法
db.setProfilingLevel()
方法采用以下形式:
db.setProfilingLevel(<level>, <options>)
参数
范围 | 类型 | 说明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
整型 | 配置数据库分析器级别。以下分析器级别可用:
由于分析在 | |||||||||
文档或整数 | 可选。接受整数或选项文档。如果将整数值而不是文档作为
|
返回:
该方法返回一个包含先前设置值的文档。
其中:
was
是上一个级别设置。slowms
是之前的slowms设置。sampleRate
是之前的sampleRate设置。filter
是上一个筛选器设置。note
是解释filter
行为的字符串。仅当filter
也存在时,此字段才会出现在输出中。
注意
filter
和note
字段仅在先前级别设置中存在的情况下才会出现在输出中。
要查看当前分析级别,请参阅 db.getProfilingStatus()
。
行为
警告
分析会降低性能,并在系统日志中暴露未经加密的查询数据。在生产部署中配置和启用分析器之前,请仔细考虑对性能和安全的影响。
有关潜在性能下降的更多信息,请参阅分析器开销。
举例
启用分析器并设置慢操作阈值和采样率
以下示例集用于 mongod
实例:
将分析级别设置为
1
,慢操作阈值减慢至
20
毫秒,并且将sampleRate设置为
0.42
。
db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 })
该操作返回一个包含先前设置值的文档。
要查看当前分析级别,请参阅 db.getProfilingStatus()
。
禁用性能分析器并设置慢操作阈值和采样率
下面的示例为 mongod
或 mongos
实例进行了设置:
将分析级别设置为
0
,慢操作阈值减慢至
20
毫秒,并且将sampleRate设置为
0.42
。
db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 })
该操作返回一个包含先前设置值的文档。
要查看当前分析级别,请参阅 db.getProfilingStatus()
。
设置过滤器以确定要进行分析的操作
以下示例集用于 mongod
实例:
db.setProfilingLevel( 1, { filter: { op: "query", millis: { $gt: 2000 } } } )
该操作返回一个包含先前设置值的文档。
要查看当前分析级别,请参阅 db.getProfilingStatus()
。
取消设置筛选器
要清除分析筛选器,请运行带有 filter: "unset"
选项的 db.setProfilingLevel()
。
db.setProfilingLevel( 1, { filter: "unset" } )
该操作返回一个包含先前设置值的文档。
要查看当前分析级别,请参阅 db.getProfilingStatus()
。