Added total query time to Sherlock
This makes it easier to see if a problem is caused by slow queries or slow Ruby code (unrelated to any SQL queries that might be used).
This commit is contained in:
parent
31a34b5917
commit
97f8c6279f
4 changed files with 25 additions and 0 deletions
|
@ -25,6 +25,12 @@
|
|||
%strong
|
||||
= @transaction.duration.round(2)
|
||||
= t('sherlock.seconds')
|
||||
%li
|
||||
%span.light
|
||||
#{t('sherlock.query_time')}
|
||||
%strong
|
||||
= @transaction.query_duration.round(2)
|
||||
= t('sherlock.seconds')
|
||||
%li
|
||||
%span.light
|
||||
#{t('sherlock.finished_at')}:
|
||||
|
|
|
@ -35,3 +35,4 @@ en:
|
|||
events: Events
|
||||
percent: '%'
|
||||
count: Count
|
||||
query_time: Query Time
|
||||
|
|
|
@ -36,6 +36,11 @@ module Gitlab
|
|||
@duration ||= started_at && finished_at ? finished_at - started_at : 0
|
||||
end
|
||||
|
||||
# Returns the total query duration in seconds.
|
||||
def query_duration
|
||||
@query_duration ||= @queries.map { |q| q.duration }.inject(:+) / 1000.0
|
||||
end
|
||||
|
||||
def to_param
|
||||
@id
|
||||
end
|
||||
|
|
|
@ -84,6 +84,19 @@ describe Gitlab::Sherlock::Transaction do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#query_duration' do
|
||||
it 'returns the total query duration in seconds' do
|
||||
time = Time.now
|
||||
query1 = Gitlab::Sherlock::Query.new('SELECT 1', time, time + 5)
|
||||
query2 = Gitlab::Sherlock::Query.new('SELECT 2', time, time + 2)
|
||||
|
||||
transaction.queries << query1
|
||||
transaction.queries << query2
|
||||
|
||||
expect(transaction.query_duration).to be_within(0.1).of(7.0)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#to_param' do
|
||||
it 'returns the transaction ID' do
|
||||
expect(transaction.to_param).to eq(transaction.id)
|
||||
|
|
Loading…
Reference in a new issue