我已经在MongoDb配置文件中启用了分析。
profile=2
slowms=5mongodb日志包含所有花费超过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 新版本2.2。获取和持有锁的时间,以微秒为单位。此字段报告下列锁类型的数据:r-全局读锁W-全局写锁r-特定于数据库的读锁-特定于数据库的写入锁
好的,所以r和w是一些特定于数据库的锁时间。但是哪一个呢?是拿着锁的时间还是等待获取锁的时间?
发布于 2014-01-01 00:21:24
profile=2 slowms=5 mongodb日志包含所有花费超过5毫秒的查询(奇怪,我认为profile=2意味着记录所有查询)。
将配置文件设置为第2级意味着所有查询都包含在system.profile上限集合中,而不管慢速值如何。这不影响mongod日志中将包含哪些查询。
如果配置文件为1级(即概要文件慢速查询),则将慢速查询的阈值设置为5ms,该阈值将被记录(不管如何分析),并包含在system.profile集合中。
如果您也希望在日志中看到查询,可以将日志级别提高到1或更高:
db.adminCommand( { setParameter: 1, logLevel: 1 } )警告:日志级别的增加会产生很大的噪音,并且日志不会像system.profile集合那样被封顶!
好的,所以R&W是一些特定于数据库的锁定时间。但是哪一个呢?是拿锁的时间还是等待获得锁的时间?
对于system.profile.lockStats,有单独的字段用于获取(timeAcquiringMicros)和持有(timeLockedMicros)锁。
日志中的“锁(微)”细节只显示timeLockedMicros详细信息(源引用:db/lockstat.cpp )。
我希望有一个链接,其中提到日志文件的各个字段是什么。
我不知道日志文件格式的任何详细文档,而且主要的MongoDB版本之间肯定有一些变化。使用MongoDB日志文件的一个很好的开源工具包是mtools。您可以查看代码,看看它是如何解析不同的日志行的。
https://stackoverflow.com/questions/20338802
复制相似问题