【问题标题】:How to measure moped insert runtime in a ruby mongoid app?如何在 ruby​​ mongoid 应用程序中测量轻便摩托车插入运行时间?
【发布时间】:2015-12-03 11:24:13
【问题描述】:

我目前正在编写一个轻便摩托车日志解析器,以监控轻便摩托车查询运行时。 使用运行时参数的 QUERY 命令非常有用,但 INSERT 和 UPDATE 没有运行时参数。所有 INSERT 和 UPDATE 后跟一个 getLastError 命令,其中包含一个运行时。

以下是一些轻便摩托车原木的示例:

使用运行时查询

MOPED: 127.0.0.1:27017 QUERY        database=X collection=X selector=X
flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.6950ms

在没有运行时但使用命令的情况下插入

MOPED: 127.0.0.1:27017 INSERT       database=X collection=X documents=X flags=[]
                       COMMAND      database=X command={:getlasterror=>1, :w=>1}
runtime: 0.4750ms

我很确定 COMMAND 运行时用于 getlasterror 调用,而不是用于我的 INSERT 调用。 那么有没有办法为 INSERT 查询获取此运行时信息?

【问题讨论】:

    标签: ruby mongodb mongoid moped


    【解决方案1】:

    我没有使用日志解析器,而是使用了类似的东西,效果很好:

    ActiveSupport::Notifications.subscribe('query.moped') do |name, start, finish, id, payload|
        runtime = (finish - start)*1000
        moped_ops = payload[:ops]
        moped_ops.each do |op|
          unless op.collection == '$cmd'
            query = op.class.name.split('::').last.downcase
            query = op.selector.first[0].to_s.gsub(/\$/, '') if query == 'command'
            DO SOMETHING WITH #{op.database}.#{op.collection}.#{query}
          end
        end
    
      end
    

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多