BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
b17457a7
Commit
b17457a7
authored
Mar 22, 2018
by
Stan Hu
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'add-query-counts-to-profiler-output' into 'master'
Add query counts by model to profiler output See merge request gitlab-org/gitlab-ce!17910
parents
6ce1013b
e2361806
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
6 deletions
+35
-6
add-query-counts-to-profiler-output.yml
...gelogs/unreleased/add-query-counts-to-profiler-output.yml
+5
-0
profiler.rb
lib/gitlab/profiler.rb
+8
-4
profiler_spec.rb
spec/lib/gitlab/profiler_spec.rb
+22
-2
No files found.
changelogs/unreleased/add-query-counts-to-profiler-output.yml
0 → 100644
View file @
b17457a7
---
title
:
Add query counts to profiler output
merge_request
:
author
:
type
:
other
lib/gitlab/profiler.rb
View file @
b17457a7
...
...
@@ -92,8 +92,8 @@ module Gitlab
if
type
&&
time
@load_times_by_model
||=
{}
@load_times_by_model
[
type
]
||=
0
@load_times_by_model
[
type
]
+=
time
.
to_f
@load_times_by_model
[
type
]
||=
[]
@load_times_by_model
[
type
]
<<
time
.
to_f
end
super
...
...
@@ -135,8 +135,12 @@ module Gitlab
def
self
.
log_load_times_by_model
(
logger
)
return
unless
logger
.
respond_to?
(
:load_times_by_model
)
logger
.
load_times_by_model
.
to_a
.
sort_by
(
&
:last
).
reverse
.
each
do
|
(
model
,
time
)
|
logger
.
info
(
"
#{
model
}
total:
#{
time
.
round
(
2
)
}
ms"
)
summarised_load_times
=
logger
.
load_times_by_model
.
to_a
.
map
do
|
(
model
,
times
)
|
[
model
,
times
.
count
,
times
.
sum
]
end
summarised_load_times
.
sort_by
(
&
:last
).
reverse
.
each
do
|
(
model
,
query_count
,
time
)
|
logger
.
info
(
"
#{
model
}
total (
#{
query_count
}
):
#{
time
.
round
(
2
)
}
ms"
)
end
end
end
...
...
spec/lib/gitlab/profiler_spec.rb
View file @
b17457a7
...
...
@@ -110,8 +110,8 @@ describe Gitlab::Profiler do
custom_logger
.
debug
(
'User Load (1.3ms)'
)
custom_logger
.
debug
(
'Project Load (10.4ms)'
)
expect
(
custom_logger
.
load_times_by_model
).
to
eq
(
'User'
=>
2.5
,
'Project'
=>
10.4
)
expect
(
custom_logger
.
load_times_by_model
).
to
eq
(
'User'
=>
[
1.2
,
1.3
]
,
'Project'
=>
[
10.4
]
)
end
it
'logs the backtrace, ignoring lines as appropriate'
do
...
...
@@ -164,4 +164,24 @@ describe Gitlab::Profiler do
end
end
end
describe
'.log_load_times_by_model'
do
it
'logs the model, query count, and time by slowest first'
do
expect
(
null_logger
).
to
receive
(
:load_times_by_model
).
and_return
(
'User'
=>
[
1.2
,
1.3
],
'Project'
=>
[
10.4
]
)
expect
(
null_logger
).
to
receive
(
:info
).
with
(
'Project total (1): 10.4ms'
)
expect
(
null_logger
).
to
receive
(
:info
).
with
(
'User total (2): 2.5ms'
)
described_class
.
log_load_times_by_model
(
null_logger
)
end
it
'does nothing when called with a logger that does not have load times'
do
expect
(
null_logger
).
not_to
receive
(
:info
)
expect
(
described_class
.
log_load_times_by_model
(
null_logger
)).
to
be_nil
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment