我在MongoDb配置文件中启用了分析.
profile=2 slowms=5
mongodb日志包含花费超过5毫秒的所有查询(很奇怪,我认为profile = 2意味着记录所有查询).
对于所有update
条目,行结束locks(micros) w:17738 17ms
(实际数字变化).对于所有query
条目,该行包含locks(micros) r:15208
样品线
Tue Dec 03 02:29:43.084 [conn11] update DbName.CollectionName query: { _id: ObjectId('51dfd2791bbdbe0b44395553')} update: { json for new document } nscanned:1 nmoved:1 nupdated:1 keyUpdates:0 locks(micros) w:17738 17ms
阅读文档,我发现以下部分,
system.profile.lockStats
New in version 2.2. The time in microseconds the operation spent acquiring and holding locks. This field reports data for the following lock types: R - global read lock W - global write lock r - database-specific read lock w - database-specific write lock
好的,所以r
&w
是一些特定于数据库的锁定时间.但是哪一个?花在锁上的时间还是等待获得锁的时间?
profile = 2 slowms = 5
mongodb日志包含花费超过5毫秒的所有查询(很奇怪,我认为profile = 2意味着记录所有查询).
将配置文件设置为级别2意味着所有查询都包含在system.profile
上限集合中,而与slowms值无关.这不会影响mongod
日志中包含的查询.
将slowms设置为5ms定义了将记录的慢查询的阈值(无论分析如何),并且system.profile
如果配置文件是级别1(即配置文件慢查询),则包含在集合中.
如果您还希望在日志中查看查询,可以将loglevel增加到1或更高:
db.adminCommand( { setParameter: 1, logLevel: 1 } )
警告:增加的日志级别会非常嘈杂,并且日志不会像system.profile
集合一样上限!
好的,所以r&w是一些特定于数据库的锁定时间.但是哪一个?花在锁上的时间还是等待获得锁的时间?
对于system.profile.lockStats
acquire(timeAcquiringMicros
)和holding(timeLockedMicros
)锁,有单独的字段.
日志中的"锁定(微软)"详细信息仅显示timeLockedMicros详细信息(源参考:db/lockstat.cpp.
我希望有一个链接,提到日志文件的各个字段是什么
我不知道日志文件格式的任何详细文档,主要MongoDB版本之间肯定存在一些差异.一个很好的开源工具包,用于处理MongoDB日志文件mtools
.您可以查看那里的代码,看看它如何解析不同的日志行.