什么是mongodb日志中的"锁(微)w:16035"和"锁(微)r:10051"

 王耀 发布于 2023-02-13 12:50

我在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是一些特定于数据库的锁定时间.但是哪一个?花在锁上的时间还是等待获得锁的时间?

1 个回答
  • 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.lockStatsacquire(timeAcquiringMicros)和holding(timeLockedMicros)锁,有单独的字段.

    日志中的"锁定(微软)"详细信息仅显示timeLockedMicros详细信息(源参考:db/lockstat.cpp.

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

    我不知道日志文件格式的任何详细文档,主要MongoDB版本之间肯定存在一些差异.一个很好的开源工具包,用于处理MongoDB日志文件mtools.您可以查看那里的代码,看看它如何解析不同的日志行.

    2023-02-13 12:54 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有