在本页面
数据库事件探查器收集有关针对正在运行的
实例执行的数据库命令的详细信息
mongod
。这包括CRUD操作以及配置和管理命令。探查器将收集到的所有数据写到
数据库中system.profile
有
上限的集合中admin
。有关概要分析器创建的文档的概述,请参见数据库概要
分析器输出system.profile
。
探查器是off
默认情况下的。您可以在多个概要分析级别之一在每个数据库或每个实例的基础上启用探查器。
启用后,性能分析会影响数据库性能和磁盘使用情况。有关更多信息,请参见开销数据库探查器。
本文档概述了数据库分析器的许多关键管理选项。有关其他相关信息,请考虑以下资源:
您可以为mongod
实例启用数据库分析。
本节使用mongo
Shell帮助程序
db.setProfilingLevel()
帮助程序来启用分析。有关使用驱动程序的说明,请参阅驱动程序文档。
为mongod
实例启用概要分析时,可以将概要分析级别设置为大于0的值。事件探查器将数据记录在system.profile
集合中。system.profile
对数据库启用概要分析后,MongoDB会在数据库中创建该
集合。
要启用概要分析并设置概要分析级别,请将概要分析级别传递给db.setProfilingLevel()
帮助程序。例如,要对所有数据库操作启用概要分析,请在mongo
外壳程序中考虑以下操作:
该外壳程序返回一个文档,该文档显示以前的概要分析级别。该键值对表示成功的操作:"ok" : 1
要验证新设置,请参阅 检查配置文件级别部分。
默认情况下,慢速操作阈值为100毫秒。要更改慢速操作阈值,请通过以下方式之一指定所需的阈值:
slowms
使用profile
命令或
db.setProfilingLevel()
外壳帮助程序方法设置值。--slowms
在启动时从命令行设置的值。slowOpThresholdMs
在
配置文件中设置的值。例如,以下代码将当前mongod
实例的性能分析级别设置为,并将实例1
的慢速操作阈值设置为mongod
20毫秒:
概要分析1
操作的概要分析级别比阈值慢。
重要
慢速操作阈值适用于mongod
实例中的所有数据库
。数据库分析器和诊断日志都使用它,并且应将其设置为最大有用值,以避免性能下降。
从MongoDB 4.0开始,您可以使用db.setProfilingLevel()
configure slowms
和sampleRate
for mongos
。对于mongos
中,slowms
并且sampleRate
因为分析是不可用的配置设置仅影响诊断日志,而不是探查mongos
。
[1]
例如,以下设置mongos
实例的慢速操作阈值以记录慢速操作:
从MongoDB 4.2开始,用于读取/写入操作的事件探查器条目和诊断日志消息(即mongod / mongos日志消息)包括:
从版本4.2(也从版本4.0.6开始可用)开始,副本集的辅助成员现在
记录的oplog条目所花费的时间比慢操作阈值要长。这些缓慢的oplog消息会在组件下的文本中记录为次要日志。这些慢操作日志条目仅取决于慢操作阈值。它们不依赖于日志级别(在系统级别或组件级别),配置级别或运行缓慢的采样率。探查器不会捕获缓慢的操作日志条目。diagnostic log
REPL
applied
op: <oplog entry> took <num>ms
3.6版的新功能。
要仅分析所有慢速操作的随机采样子集,请通过以下方式之一指定所需的采样率: [2]
sampleRate
使用profile
命令或db.setProfilingLevel()
外壳帮助程序方法设置值。--slowOpSampleRate
for mongod
或--slowOpSampleRate
for 的值mongos
。slowOpSampleRate
在
配置文件中设置的值。默认情况下,sampleRate
设置为1.0
,这意味着将对所有慢速
操作进行分析。当sampleRate
设置为0到1之间时,具有概要分析级别的数据库1
将仅根据来概要分析慢速操作的随机采样百分比sampleRate
。
例如,以下方法将的分析级别设置为
mongod
,1
并将探查器设置为对所有慢速操作的42%进行采样:
修改后的采样率值也适用于系统日志。
从MongoDB 4.0开始,您可以使用db.setProfilingLevel()
configure slowms
和sampleRate
for mongos
。对于mongos
中,slowms
并且
sampleRate
因为分析是不可用的配置设置仅影响诊断日志,而不是探查
mongos
。[1]
例如,以下内容mongos
为记录慢速操作设置实例的采样率:
重要
当logLevel
设置为0
,MongoDB的记录速度慢
,在所确定的速度诊断日志操作
slowOpSampleRate
。从MongoDB 4.2开始,副本集的辅助副本将记录所有花费比慢操作阈值更长的时间来应用的oplog条目消息,而不管采样率如何。
在更高的logLevel
设置下,所有操作都将在诊断日志中显示,而不管其等待时间如何,但以下情况除外:次要对象记录慢速oplog条目消息。辅助节点仅记录慢速操作日志条目;增加logLevel
不会记录所有操作日志条目。
:binary:`~bin.mongod` or :binary:`~bin.
mongos`
¶[1] | (1,2)查看数据库分析和拆分。 |
要查看概要分析级别,请从mongo
shell 发出以下命令:
外壳程序返回类似于以下内容的文档:
该was
字段指示当前配置文件级别。
该slowms
字段指示操作时间阈值(以毫秒为单位),超过该阈值则认为操作缓慢。
该sampleRate
字段指示应分析的慢速操作的百分比。
要仅返回概要分析级别,请db.getProfilingLevel()
在mongo
外壳程序中使用
帮助器,如下所示:
mongod
实例启用分析¶为了在测试环境中进行开发,可以为整个mongod
实例启用数据库分析。分析级别适用于mongod
实例提供的所有数据库
。
要为mongod
实例启用性能分析,请mongod
在启动时将以下选项传递给。
或者,您可以在配置文件中指定operationProfiling。
它将分析级别设置为1
,将慢速操作定义为持续时间超过15
毫秒的操作,并指定仅应分析50%的慢速操作。[2]
该slowms
和slowOpSampleRate
也影响其操作记录到诊断日志时logLevel
被设置为0
。该slowms
和slowOpSampleRate
也可用来配置诊断日志记录mongos
。[2]
也可以看看
数据库探查器记录有关system.profile
集合中数据库操作的信息
。
要查看分析信息,请查询system.profile
集合。要查看示例查询,请参阅
示例Profiler数据查询。有关输出数据的说明,请参见Database Profiler Output。
小费
您可以$comment
用来将数据添加到查询谓词,以更轻松地分析探查器中的数据。
本节显示对system.profile
集合的查询示例。有关查询输出的说明,请参见
Database Profiler Output。
要返回system.profile
集合中最新的10条日志条目,请运行类似于以下内容的查询:
要返回除命令操作($ cmd)之外的所有其他操作,请运行类似于以下内容的查询:
要返回特定集合的操作,请运行类似于以下内容的查询。此示例返回mydb
数据库
test
集合中的操作:
要返回比5
毫秒慢的操作,请运行类似于以下内容的查询:
要返回特定时间范围内的信息,请运行类似于以下内容的查询:
下面的示例查看时间范围,user
从输出中抑制该字段以使其更易于阅读,并根据每个操作花费的时间对结果进行排序:
启用分析后,分析会影响数据库性能,特别是在配置为2 的
分析级别或使用低阈值且分析级别为1的情况下。分析还会消耗磁盘空间,因为它既会记录到system.profile
集合,也会记录到磁盘MongoDB logfile
。在生产部署上配置和启用探查器之前,请仔细考虑所有性能和安全隐患。
system.profile
系列¶该system.profile
集合是一个有
上限的集合,默认大小为1 MB。这种大小的集合通常可以存储数千个概要文件,但是某些应用程序每个操作可能使用或多或少的配置文件数据。如果您需要更改system.profile
集合的大小
,请按照以下步骤操作。
system.profile
在主数据库上更改集合大小¶要更改主数据库system.profile
上集合的大小,您必须:
system.profile
集合。system.profile
集合。例如,要创建字节(4 MB)的新system.profile
集合,请4000000
在mongo
shell中使用以下操作序列
:
system.profile
在辅助节点上更改集合大小¶要system.profile
在辅助服务器上更改集合的大小,必须停止辅助服务器,将其作为独立服务器运行,然后执行上述步骤。完成后,以副本集的成员身份重新启动独立服务器。有关更多信息,请参阅对副本集成员执行维护。
[2] | (1,2,3)在4.2版(在4.0.6也可启动)开始,副本集的次要构件现在
登录OPLOG条目称取比慢的操作阈值长适用。这些缓慢的oplog消息会在组件下的文本中记录为次要日志。这些慢操作日志条目仅取决于慢操作阈值。它们不依赖于日志级别(在系统级别或组件级别),配置级别或运行缓慢的采样率。探查器不会捕获缓慢的操作日志条目。diagnostic log REPL applied
op: <oplog entry> took <num>ms |