【发布时间】:2016-06-06 22:01:53
【问题描述】:
此 MongoDB 实例的典型负载为每秒 300 个命令,通常每个命令在 50 毫秒内完成,即使在使用所有可能查询的负载测试下也是如此。有时会出现一个问题,即一个命令块需要几秒钟以上的时间。
mongod 日志中完整的问题命令块的时间戳具有相同的值。除了下面的示例日志行之外,日志中还有 20 个其他命令(插入和更新的混合),其时间戳完全相同,为 10:32:30.456,但记录的执行时间非常不同,从 2 秒到 6 秒秒。
我在 mongod 日志中看到的时间戳是命令启动的时间,还是命令完成的时间?
示例 mongod 日志条目:
2016-03-10T10:32:30.456+0000 I COMMAND [conn94] command sampleDb.sampleEvents command: insert { ... } ninserted:1 keyUpdates:0 writeConflicts:0 numYields:0 reslen:40 locks:{ Global :{acquireCount:{r:1,w:1}},数据库:{acquireCount:{w:1}},集合:{acquireCount:{w:1}}}协议:op_query 4555ms
【问题讨论】:
-
逻辑会说“之后”,因此会说“完成”,尽管它确实没有在任何地方记录,因此您需要查看代码以确定。由于当然存在执行时间,因此必须在收集和写入此类数据之前完成命令。然后使用“开始”时间戳进行操作也是没有意义的,因为如果一个操作一个接一个地开始但首先完成,那么记录的时间戳将不按顺序排列。无论如何,日志文件的典型约定是时间戳是指写入日志条目的时间。
标签: mongodb