簡體   English   中英

如何在Ruby Mongoid應用程序中測量助力車插入物的運行時間?

[英]How to measure moped insert runtime in a ruby mongoid app?

我目前正在編寫輕便摩托車日志解析器,以監視輕便摩托車查詢運行時。 對於使用運行時參數的QUERY命令,它非常有用,但是INSERT和UPDATE沒有運行時參數。 所有INSERT和UPDATE之后都有一個包含運行時的getLastError COMMAND。

以下是一些輕便摩托車原木的示例:

具有運行時的QUERY

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查詢獲取此運行時信息?

我沒有使用日志解析器,而是使用了類似的東西,並且效果很好:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM