首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb日志中的锁(Micros)w:16035和锁(Micros)r:10051是什么?

mongodb日志中的锁(Micros)w:16035和锁(Micros)r:10051是什么?
EN

Stack Overflow用户
提问于 2013-12-02 21:59:49
回答 1查看 3.6K关注 0票数 5

我已经在MongoDb配置文件中启用了分析。

代码语言:javascript
复制
profile=2
slowms=5

mongodb日志包含所有花费超过5毫秒的查询(奇怪,我认为profile=2意味着记录所有查询)。

对于所有update条目,行以locks(micros) w:17738 17ms结尾(实际数字不同)。对于所有query条目,行包含locks(micros) r:15208

样本线

代码语言:javascript
复制
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-特定于数据库的读锁-特定于数据库的写入锁

好的,所以rw是一些特定于数据库的锁时间。但是哪一个呢?是拿着锁的时间还是等待获取锁的时间?

EN

回答 1

Stack Overflow用户

发布于 2014-01-01 00:21:24

profile=2 slowms=5 mongodb日志包含所有花费超过5毫秒的查询(奇怪,我认为profile=2意味着记录所有查询)。

将配置文件设置为第2级意味着所有查询都包含在system.profile上限集合中,而不管慢速值如何。这不影响mongod日志中将包含哪些查询。

如果配置文件为1级(即概要文件慢速查询),则将慢速查询的阈值设置为5ms,该阈值将被记录(不管如何分析),并包含在system.profile集合中。

如果您也希望在日志中看到查询,可以将日志级别提高到1或更高:

代码语言:javascript
复制
db.adminCommand( { setParameter: 1, logLevel: 1 } )

警告:日志级别的增加会产生很大的噪音,并且日志不会像system.profile集合那样被封顶!

好的,所以R&W是一些特定于数据库的锁定时间。但是哪一个呢?是拿锁的时间还是等待获得锁的时间?

对于system.profile.lockStats,有单独的字段用于获取(timeAcquiringMicros)和持有(timeLockedMicros)锁。

日志中的“锁(微)”细节只显示timeLockedMicros详细信息(源引用:db/lockstat.cpp )。

我希望有一个链接,其中提到日志文件的各个字段是什么。

我不知道日志文件格式的任何详细文档,而且主要的MongoDB版本之间肯定有一些变化。使用MongoDB日志文件的一个很好的开源工具包是mtools。您可以查看代码,看看它是如何解析不同的日志行的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20338802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档