nbogie-production_log_analyzer 1.5.1.2 → 1.5.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,14 @@
1
+ #http://ph7spot.com/musings/getting-started-with-autotest#running_whole_test_suite
2
+ # Override autotest default magic to rerun all tests every time a
3
+ # change is detected on the file system.
4
+ class Autotest
5
+
6
+ def get_to_green
7
+ begin
8
+ rerun_all_tests
9
+ wait_for_changes unless all_good
10
+ end until all_good
11
+ end
12
+
13
+ end
14
+
@@ -1,3 +1,7 @@
1
+ === 1.5.1.3
2
+
3
+ * Add bin for pl_analyze_diff
4
+
1
5
  === 1.5.1.2
2
6
 
3
7
  * Add tool to diff reports, to see what actions got faster or slower, etc.
@@ -1,18 +1,29 @@
1
- History.txt
2
- LICENSE.txt
3
- Manifest.txt
4
- README.txt
5
- Rakefile
1
+ .autotest
6
2
  bin/action_errors
7
3
  bin/action_grep
8
4
  bin/pl_analyze
5
+ bin/pl_analyze_diff
6
+ History.txt
9
7
  lib/production_log/action_grep.rb
10
8
  lib/production_log/analyzer.rb
11
9
  lib/production_log/parser.rb
10
+ lib/report/report_differ.rb
11
+ lib/report/report_parser.rb
12
+ LICENSE.txt
13
+ Manifest.txt
14
+ Rakefile
15
+ README.txt
16
+ test/example_data/actual_diff.txt
17
+ test/example_data/example.txt
18
+ test/example_data/expected_diff.txt
19
+ test/example_data/report_a.txt
20
+ test/example_data/report_b.txt
21
+ test/test_action_grep.rb
22
+ test/test_analyzer.rb
23
+ test/test_parser.rb
24
+ test/test_report_differ.rb
25
+ test/test_report_parser.rb
12
26
  test/test.syslog.0.14.x.log
13
27
  test/test.syslog.1.2.shortname.log
14
28
  test/test.syslog.empty.log
15
29
  test/test.syslog.log
16
- test/test_action_grep.rb
17
- test/test_analyzer.rb
18
- test/test_parser.rb
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ Hoe.plugin :email, :perforce # not on minitest yet
8
8
  Hoe.spec 'nbogie-production_log_analyzer' do
9
9
  developer 'Eric Hodel', 'drbrain@segment7.net'
10
10
  self.name = 'nbogie-production_log_analyzer'
11
- self.version = '1.5.1.2'
11
+ self.version = '1.5.1.3'
12
12
 
13
13
  extra_deps << ['rails_analyzer_tools', '>= 1.4.0']
14
14
  end
@@ -1,4 +1,4 @@
1
- #!/usr/local/bin/ruby -w
1
+ #!/usr/bin/env ruby
2
2
 
3
3
  require 'production_log/analyzer'
4
4
 
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'report/report_differ'
4
+
5
+ if ARGV.size != 2 then
6
+ puts "Usage: #{$0} report_a report_b"
7
+ exit 1
8
+ end
9
+
10
+ ReportDiffer.compare_files(ARGV[0], ARGV[1])
@@ -0,0 +1,216 @@
1
+ require 'report/report_parser.rb'
2
+
3
+ module AnsiHelp
4
+ def ansi(code, text)
5
+ "\033[#{code}m#{text}\033[0m"
6
+ end
7
+ def noattrs(text); ansi(0,text); end
8
+ def bold(text); ansi(1,text); end
9
+ def red(text); ansi(31,text); end
10
+ def green(text); ansi(32,text); end
11
+ def yellow(text); ansi(33,text); end
12
+ def white(text); ansi(37,text); end
13
+ def redbg(text); ansi(41,text); end
14
+ def greenbg(text); ansi(42,text); end
15
+ end
16
+
17
+ class MatchedRequests
18
+ attr_accessor :request1, :request2
19
+ def initialize(request1, request2)
20
+ @request1 = request1
21
+ @request2 = request2
22
+ end
23
+
24
+ def key
25
+ r = @request1
26
+ [["%s#%s" % [r.controller, r.action]], r.verb, r.format].compact.join(".")
27
+ end
28
+
29
+ def values_ab(method_name)
30
+ [ @request1, @request2 ].map {|req| req.send(method_name) }
31
+ end
32
+
33
+ def to_s
34
+ "%s matches %s" %[@request1, @request2]
35
+ end
36
+ end
37
+ class UnmatchedRequest
38
+ attr_accessor :report, :request
39
+ def initialize(report, request)
40
+ @report = report
41
+ @request = request
42
+ end
43
+ def to_s
44
+ "%s only in report %s" %[@request, @report.name]
45
+ end
46
+ end
47
+
48
+ class ReportDiffer
49
+ include AnsiHelp
50
+
51
+ def banner(title)
52
+ ("="*30) + title + ("=" * 30) + "\n"
53
+ end
54
+
55
+ def compute_difference_in_values(va, vb)
56
+ return 1 if va==vb
57
+ sign= (vb > va) ? 1 : -1
58
+ return sign * 999999 if (va==0 || vb==0)
59
+ min=[va,vb].min
60
+ max=[va,vb].max
61
+ abs=max/min.to_f
62
+ abs=("%.2f"%abs).to_f
63
+ return sign * abs
64
+ end
65
+
66
+ def compute_difference(a, b, method_name)
67
+ va= a.send(method_name)
68
+ vb= b.send(method_name)
69
+ return compute_difference_in_values(va,vb)
70
+ end
71
+
72
+ def find_matched_actions(ra, rb)
73
+ matched=[]
74
+ ra.requests.each do |req_a|
75
+ req_b = rb.get_request_like(req_a)
76
+ unless req_b.nil?
77
+ matched << MatchedRequests.new(req_a, req_b)
78
+ end
79
+ end
80
+ matched
81
+ end
82
+
83
+ def find_unmatched_actions(ra, rb)
84
+ unmatched=[]
85
+ [[ra, rb], [rb, ra]].each do|a,b|
86
+ a.requests.each do |req_a|
87
+ req_b = b.get_request_like(req_a)
88
+ if req_b.nil?
89
+ (unmatched << UnmatchedRequest.new(a, req_a))
90
+ end
91
+ end
92
+ end
93
+ unmatched
94
+ end
95
+
96
+ def compare_attribs(holder_a, holder_b, attribs_for_comparison)
97
+ results = {}
98
+ attribs_for_comparison.each do |method_name|
99
+ change = compute_difference(holder_a, holder_b, method_name)
100
+ diff_hash = {}
101
+ diff_hash[:change] = change
102
+ diff_hash[:from] = holder_a.send(method_name)
103
+ diff_hash[:to] = holder_b.send(method_name)
104
+ results["diff_#{method_name}".to_sym] = diff_hash
105
+ end
106
+ return results
107
+ end
108
+
109
+ def compare_matched_action(matched_action, threshold)
110
+ attribs=[:count, :avg_time, :std_dev, :max_time, :min_time]
111
+ return compare_attribs(matched_action.request1, matched_action.request2, attribs)
112
+ end
113
+
114
+ def compare_summaries(report_a, report_b, threshold=1.3)
115
+ attribs=[:count, :avg_time, :std_dev, :max_time, :min_time]
116
+ return compare_attribs(report_a.summary, report_b.summary, attribs)
117
+ end
118
+
119
+ def compare_requests(report_a, report_b, threshold)
120
+ diffs = {}
121
+ matched_actions = find_matched_actions(report_a, report_b)
122
+ matched_actions.each do |matched_action|
123
+ diffs[matched_action.key] = compare_matched_action(matched_action, threshold)
124
+ end
125
+ diffs
126
+ end
127
+
128
+ def compare(report_a, report_b, threshold=1)
129
+ summary_diff=compare_summaries(report_a, report_b, threshold)
130
+ req_diffs=compare_requests(report_a, report_b, threshold)
131
+ {:threshold => threshold, :summary_diff => summary_diff, :request_diffs => req_diffs, :unmatched_actions => find_unmatched_actions(report_a, report_b)}
132
+ end
133
+
134
+ def should_use_ansi()
135
+ false
136
+ end
137
+
138
+ def prepare_report_line_for_request(title, diff_hash, threshold)
139
+ text=""
140
+ text << "%-50s" % title
141
+ rd = diff_hash
142
+ w = 20
143
+ cell_texts = []
144
+ %w(count avg_time std_dev min_time max_time).each do |metric|
145
+ metric_key = ("diff_"+metric).to_sym
146
+ diff = rd[metric_key]
147
+ change = diff[:change]
148
+ from = diff[:from]
149
+ to = diff[:to]
150
+ sign = (change == 1 ? " " : (change > 0 ? "+":""))
151
+ change_text="%s%.1f" % [ sign, change ]
152
+ if should_use_ansi()
153
+ change_text = bold(change_text)
154
+ change_text = change > 0 ? redbg(change_text) : ( change.abs > 2 ? greenbg(change_text) : green(change_text) )
155
+ end
156
+ cell_text = ( "%s(%s->%s)" % [ change_text, from, to])
157
+ if change.abs < threshold
158
+ marker = should_use_ansi() ? noattrs(white("~")) : "~" #when using ansi pad the marker with the same number of ansi control chars as the other columns get
159
+ cell_text = "%-#{w}s" % marker
160
+ end
161
+ cell_texts << cell_text
162
+ end
163
+ #max_width = cell_texts.map{|ct| ct.length}.max
164
+ ## w=max_width+3
165
+ text << (" %-#{w}s %-#{w}s %-#{w}s %-#{w}s %-#{w}s\n" % cell_texts)
166
+ end
167
+
168
+ def prepare_report_line_for_unmatched_action(ac)
169
+ "%-60s only in %s\n" % [ ac.request, ac.report ]
170
+ end
171
+
172
+ def prepare_report(diff_data)
173
+ dd=diff_data
174
+ threshold = dd[:threshold]
175
+ text =""
176
+ text << "#Threshold=#{threshold}\n"
177
+ w=20
178
+
179
+ #Headers
180
+ text << "%-50s %-#{w}s %-#{w}s %-#{w}s %-#{w}s %-#{w}s\n" % ["Request_Times_Summary:", "Count", "Avg", "Std_Dev", "Min", "Max"]
181
+
182
+ #Summary - all requests - line
183
+ text << prepare_report_line_for_request("ALL_REQUESTS", dd[:summary_diff], threshold)
184
+ text << "\n"
185
+ #Go through all the request diffs and print them, in order of frequency
186
+ req_diffs = dd[:request_diffs]
187
+ req_diffs.sort_by{|k,v| v[:diff_count][:from]}.reverse.each do |req_key, req_diff|
188
+ text << prepare_report_line_for_request(req_key, req_diff, threshold)
189
+ end
190
+
191
+ text << "\nUnmatched_Actions: \n\n"
192
+ dd[:unmatched_actions].each do |unmatched_action|
193
+ text << prepare_report_line_for_unmatched_action(unmatched_action)
194
+ end
195
+ text
196
+ end
197
+
198
+ def self.compare_files(report_file_a, report_file_b)
199
+ differ = ReportDiffer.new
200
+ parser = ReportParser.new
201
+ reports = [report_file_a, report_file_b].map do |filename|
202
+ text=File.read(filename)
203
+ report = parser.parse(File.basename(filename), text)
204
+ report
205
+ end
206
+ diff_data = differ.compare(reports[0], reports[1])
207
+ puts differ.prepare_report(diff_data)
208
+ end
209
+
210
+ end
211
+
212
+ if __FILE__ == $0
213
+ abort("usage #{File.dirname(__FILE__)} report_a report_b") if ARGV.size!=2
214
+ ReportDiffer.compare_files(ARGV[0], ARGV[1])
215
+ end
216
+
@@ -0,0 +1,109 @@
1
+ class Report
2
+ attr_accessor :name
3
+ attr_accessor :requests
4
+ attr_accessor :started_at
5
+ attr_accessor :summary
6
+
7
+ def initialize
8
+ @summary = Request.new #blagging it. doesn't have controller/action.
9
+ @requests=[]
10
+ end
11
+
12
+ def get_request_like(other)
13
+ @requests.select { |r| r.controller == other.controller && r.action == other.action && r.verb==other.verb && r.format==other.format}.first
14
+ end
15
+ def to_s
16
+ @name
17
+ end
18
+ end
19
+
20
+ class Request
21
+ attr_accessor :controller
22
+ attr_accessor :action
23
+ attr_accessor :verb
24
+ attr_accessor :format
25
+ attr_accessor :count, :avg_time, :std_dev, :min_time, :max_time
26
+ def initialize
27
+ end
28
+
29
+ def self.create(controller, action, count, avg_time, std_dev, min_time, max_time, options={})
30
+ r = Request.new
31
+ r.verb = options[:verb]
32
+ r.format = options[:format]
33
+ r.controller=controller
34
+ r.action=action
35
+ r.count=count
36
+ r.avg_time=avg_time
37
+ r.std_dev=std_dev
38
+ r.min_time=min_time
39
+ r.max_time=max_time
40
+ return r
41
+ end
42
+
43
+ def fixup_controller_name!
44
+ if @controller =~ /^Api([^:].*)Controller/
45
+ @controller = "Api::V1::#{$1}Controller"
46
+ end
47
+ end
48
+
49
+ def to_s
50
+ "%s#%s.%s.%s" % [ controller, action, verb, format ]
51
+ end
52
+
53
+ end
54
+
55
+ class ReportParser
56
+ def parse(report_name, content)
57
+ report = Report.new
58
+ report.name=report_name
59
+ #TODO: parse report name as a time
60
+ report.started_at=report_name#Time.parse(report_name)
61
+ #ALL REQUESTS: 11830 0.085 0.052 0.001 1.053
62
+ content =~ /ALL REQUESTS:\s*([0-9]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)/
63
+ report.summary.count=Integer($1)
64
+ report.summary.avg_time=Float($2)
65
+ report.summary.std_dev=Float($3)
66
+ report.summary.min_time=Float($4)
67
+ report.summary.max_time=Float($5)
68
+
69
+ content =~ /\nALL REQUESTS:.*?\n\n(.*)\n\nSlowest Request Times/m
70
+
71
+ request_lines_block = $1
72
+ throw "No requests found" if request_lines_block.nil?
73
+ request_lines_block.split(/\n/).each_with_index do |line, i|
74
+ request = parse_request(line)
75
+ request.fixup_controller_name!
76
+ if request.nil? || request.controller.nil?
77
+ puts "WARN: unparseable request line: #{line}, index #{i}"
78
+ next
79
+ end
80
+ report.requests << request
81
+ end
82
+ return report
83
+ end
84
+
85
+ def parse_request(request_line)
86
+ r = Request.new
87
+ #Examples:
88
+ #FooController#update.PUT.xml: 3557 0.144 0.037 0.059 0.712
89
+ #FooController#show.GET: 11707 0.107 0.063 0.015 1.075
90
+ request_line =~ /([a-zA-Z0-9:]+)#([^\.: ]+)\.?([a-zA-Z]+)?\.?([a-zA-Z]+)?:\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/
91
+ r.controller = $1
92
+ r.action = $2
93
+ r.verb = $3.upcase unless $3.nil?
94
+ r.format = $4.downcase unless $4.nil?
95
+ r.count = $5.to_i
96
+ r.avg_time = $6.to_f
97
+ r.std_dev = $7.to_f
98
+ r.min_time = $8.to_f
99
+ r.max_time = $9.to_f
100
+ r
101
+ end
102
+
103
+ def looks_ok_on_quick_peek?(content)
104
+ return false if content.nil? || content.empty?
105
+ return false if (content =~ /No requests to analyze/)
106
+ return true
107
+ end
108
+
109
+ end
@@ -0,0 +1,44 @@
1
+ #Threshold=1
2
+ Request_Times_Summary: Count Avg Std_Dev Min Max
3
+ ALL_REQUESTS +1.4(16515->22909) -2.2(0.405->0.18) -2.8(2.023->0.725) 1.0(0.001->0.001) -1.6(59.678->37.721)
4
+
5
+ Api::V1::SleepwalkersController#update.PUT.xml +1.4(6249->8793) -1.1(0.079->0.07) -2.5(0.176->0.071) +1.4(0.028->0.04) -2.7(8.328->3.103)
6
+ Api::V1::SleepwalkersController#update.PUT.csv +1.4(6245->8807) -1.0(0.099->0.097) -1.2(0.085->0.071) -1.0(0.028->0.027) +1.2(2.536->3.02)
7
+ HealthController#pulse.GET -1.1(791->742) +1.5(0.002->0.003) +2.0(0.005->0.01) 1.0(0.001->0.001) +1.1(0.129->0.142)
8
+ Api::V1::SleepwalkersController#show.GET +1.4(509->710) -1.2(0.072->0.061) -2.1(0.17->0.08) -1.1(0.014->0.013) -2.3(3.505->1.504)
9
+ Api::V1::SleepwalkersController#show.GET.json +1.4(496->702) -1.2(0.076->0.064) -3.6(0.224->0.062) +1.0(0.026->0.027) -7.3(4.874->0.663)
10
+ Api::V1::SleepwalkersController#show.GET.xml +1.4(491->706) -1.2(0.065->0.054) -1.4(0.065->0.047) -1.1(0.023->0.022) -1.7(0.624->0.359)
11
+ Api::V1::SleepwalkersController#show.GET.csv +1.5(474->703) 1.0(0.029->0.029) -1.0(0.029->0.028) 1.0(0.011->0.011) -1.3(0.239->0.185)
12
+ AccomplicesController#history.GET.csv +1.4(470->680) -3.3(5.35->1.618) -2.5(3.748->1.522) 1.0(0.003->0.003) -1.5(20.681->13.692)
13
+ WindsController#feeds.GET +1.4(237->320) -1.1(0.201->0.183) +1.3(0.153->0.195) -1.2(0.096->0.083) +1.5(1.304->1.989)
14
+ ScamsController#show.GET +1.3(236->317) -3.0(11.793->3.869) -2.3(8.46->3.697) -1.1(0.038->0.034) -1.6(59.678->37.721)
15
+ ScamsController#index.GET +1.3(147->194) -1.2(0.6->0.492) -2.2(0.395->0.182) -1.1(0.076->0.072) -1.5(3.638->2.427)
16
+ ScamsController#outputs.GET +1.4(114->160) -2.1(0.037->0.018) -3.3(0.063->0.019) 1.0(0.011->0.011) -2.8(0.404->0.144)
17
+ Api::V1::SleepwalkersController#update.PUT -1.1(9->8) -1.1(0.051->0.047) -1.3(0.017->0.013) -1.0(0.035->0.034) -1.2(0.09->0.076)
18
+ ScamsController#index.GET.rss 1.0(9->9) +1.0(0.132->0.135) +1.2(0.054->0.064) +1.0(0.095->0.098) +1.1(0.242->0.276)
19
+ ScamsController#index.GET.atom 1.0(9->9) -1.2(0.193->0.16) -1.4(0.065->0.046) +1.0(0.134->0.135) -1.0(0.292->0.283)
20
+ Api::V1::SleepwalkersController#create.POST 1.0(3->3) -1.7(0.369->0.215) -1.6(0.342->0.22) -1.5(0.076->0.052) -1.6(0.849->0.526)
21
+ Api::V1::SleepwalkersController#destroy.DELETE 1.0(3->3) 1.0(0.046->0.046) -1.1(0.009->0.008) +1.0(0.037->0.038) -1.0(0.059->0.057)
22
+ Api::V1::SleepwalkersController#index.GET 1.0(2->2) -1.1(2.887->2.744) -1.5(0.327->0.22) -1.0(2.56->2.525) -1.1(3.214->2.964)
23
+ ScamsController#tag.GET.atom 1.0(2->2) -1.3(0.462->0.345) -3.6(0.185->0.052) +1.1(0.277->0.293) -1.6(0.647->0.397)
24
+ Api::V1::MisinterpretationsController#show.GET 1.0(2->2) +1.1(0.021->0.022) +1.2(0.005->0.006) 1.0(0.016->0.016) +1.1(0.026->0.028)
25
+ Api::V1::AccomplicesController#show.GET.xml 1.0(2->2) -1.0(0.102->0.1) -1.0(0.081->0.079) 1.0(0.021->0.021) -1.0(0.184->0.179)
26
+ ScamsController#map.GET +6.0(2->12) -3.5(1.075->0.305) -1.7(0.933->0.55) -1.8(0.141->0.08) +1.1(2.008->2.112)
27
+ Api::V1::MisinterpretationsController#update.PUT 1.0(1->1) 1.0(0.016->0.016) 1.0(0.0->0.0) 1.0(0.016->0.016) 1.0(0.016->0.016)
28
+ Api::V1::AccomplicesController#create.POST.xml 1.0(1->1) -1.2(0.089->0.075) 1.0(0.0->0.0) -1.2(0.089->0.075) -1.2(0.089->0.075)
29
+ Api::V1::AccomplicesController#update.PUT.xml 1.0(1->1) 1.0(0.03->0.03) 1.0(0.0->0.0) 1.0(0.03->0.03) 1.0(0.03->0.03)
30
+ Api::V1::SleepwalkersController#index.GET.xml 1.0(1->1) -1.1(0.385->0.353) 1.0(0.0->0.0) -1.1(0.385->0.353) -1.1(0.385->0.353)
31
+ WindsController#show.GET 1.0(1->1) +1.0(1.988->2.006) 1.0(0.0->0.0) +1.0(1.988->2.006) +1.0(1.988->2.006)
32
+ WindsController#feeds.GET.rss 1.0(1->1) -1.1(0.037->0.034) 1.0(0.0->0.0) -1.1(0.037->0.034) -1.1(0.037->0.034)
33
+ Api::V1::MisinterpretationsController#create.POST 1.0(1->1) -1.1(0.075->0.067) 1.0(0.0->0.0) -1.1(0.075->0.067) -1.1(0.075->0.067)
34
+ Api::V1::SleepwalkersController#index.GET.json 1.0(1->1) -1.8(0.34->0.19) 1.0(0.0->0.0) -1.8(0.34->0.19) -1.8(0.34->0.19)
35
+ Api::V1::AccomplicesController#destroy.DELETE.xml 1.0(1->1) -1.0(0.027->0.026) 1.0(0.0->0.0) -1.0(0.027->0.026) -1.0(0.027->0.026)
36
+ WindsController#favourites.GET.json 1.0(1->1) -1.2(0.019->0.016) 1.0(0.0->0.0) -1.2(0.019->0.016) -1.2(0.019->0.016)
37
+ WindsController#feeds.GET.json 1.0(1->1) +11.2(0.013->0.145) 1.0(0.0->0.0) +11.2(0.013->0.145) +11.2(0.013->0.145)
38
+ WindsController#feeds.GET.atom 1.0(1->1) -1.1(0.061->0.058) 1.0(0.0->0.0) -1.1(0.061->0.058) -1.1(0.061->0.058)
39
+ ScamsController#tag.GET.rss 1.0(1->1) -1.0(0.134->0.129) 1.0(0.0->0.0) -1.0(0.134->0.129) -1.0(0.134->0.129)
40
+
41
+ Unmatched_Actions:
42
+
43
+ ScamsController#index.GET.json only in report_a.txt
44
+ Api::V1::MisinterpretationsController#destroy.DELETE. only in report_a.txt
@@ -0,0 +1,54 @@
1
+ Request Times Summary: Count Avg Std Dev Min Max
2
+ ALL REQUESTS: 11830 0.185 0.212 0.001 3.553
3
+
4
+ FooController#update.PUT.xml: 3557 0.144 0.137 0.059 3.212
5
+ FooController#update.PUT.csv: 3542 0.392 0.232 0.069 3.553
6
+ FooController#show.GET.json: 851 0.069 0.087 0.030 1.257
7
+ FooController#show.GET: 844 0.068 0.085 0.016 1.077
8
+ BarController#history.GET.csv: 780 0.029 0.046 0.003 0.849
9
+ HealthController#pulse.GET: 374 0.006 0.010 0.001 0.134
10
+ QuxController#index.GET: 64 0.434 0.174 0.041 0.922
11
+ UsersController#feeds.GET: 58 0.147 0.092 0.071 0.603
12
+
13
+ Slowest Request Times:
14
+ FooController#update.PUT.csv took 3.553s
15
+ FooController#update.PUT.csv took 3.251s
16
+ FooController#update.PUT.xml took 3.212s
17
+
18
+ ------------------------------------------------------------------------
19
+
20
+ DB Times Summary: Count Avg Std Dev Min Max
21
+ ALL REQUESTS: 11830 0.014 0.090 0.000 2.871
22
+
23
+ FooController#update.PUT.xml: 3557 0.015 0.090 0.003 2.832
24
+ FooController#update.PUT.csv: 3542 0.022 0.135 0.005 2.871
25
+ FooController#show.GET.json: 851 0.008 0.023 0.004 0.585
26
+ FooController#show.GET: 844 0.008 0.015 0.002 0.320
27
+ BarController#history.GET.csv: 780 0.003 0.005 0.000 0.092
28
+ HealthController#pulse.GET: 374 0.000 0.000 0.000 0.000
29
+ QuxController#index.GET: 64 0.043 0.024 0.000 0.147
30
+ UsersController#feeds.GET: 58 0.034 0.054 0.005 0.323
31
+
32
+ Slowest Total DB Times:
33
+ FooController#update.PUT.csv took 2.871s
34
+ FooController#update.PUT.xml took 2.832s
35
+ FooController#update.PUT.csv took 2.772s
36
+
37
+ ------------------------------------------------------------------------
38
+
39
+ Render Times Summary: Count Avg Std Dev Min Max
40
+ ALL REQUESTS: 11830 0.006 0.034 0.000 0.704
41
+
42
+ FooController#update.PUT.xml: 3557 0.001 0.007 0.000 0.152
43
+ FooController#update.PUT.csv: 3542 0.000 0.006 0.000 0.146
44
+ FooController#show.GET.json: 851 0.027 0.037 0.013 0.328
45
+ FooController#show.GET: 844 0.001 0.006 0.000 0.133
46
+ BarController#history.GET.csv: 780 0.000 0.001 0.000 0.016
47
+ HealthController#pulse.GET: 374 0.000 0.007 0.000 0.132
48
+ QuxController#index.GET: 64 0.326 0.135 0.022 0.509
49
+ UsersController#feeds.GET: 58 0.090 0.057 0.031 0.262
50
+
51
+ Slowest Total Render Times:
52
+ QuxController#show.GET took 0.704s
53
+ QuxController#show.GET took 0.541s
54
+ QuxController#index.GET took 0.509s
@@ -0,0 +1,162 @@
1
+ Request Times Summary: Count Avg Std Dev Min Max
2
+ ALL REQUESTS: -1.39(22909>16515) +2.25(0.180>0.405) +2.79(0.725>2.023) =(0.001>0.001) +1.58(37.721>59.678)
3
+
4
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.097 0.071 0.027 3.020
5
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.070 0.071 0.040 3.103
6
+ HealthController#pulse.GET: 742 0.003 0.010 0.001 0.142
7
+ Api::V1::SleepwalkersController#show.GET: 710 0.061 0.080 0.013 1.504
8
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.054 0.047 0.022 0.359
9
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.029 0.028 0.011 0.185
10
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.064 0.062 0.027 0.663
11
+ AccomplicesController#history.GET.csv: 680 1.618 1.522 0.003 13.692
12
+ WindsController#feeds.GET: 320 0.183 0.195 0.083 1.989
13
+ ScamsController#show.GET: 317 3.869 3.697 0.034 37.721
14
+ ScamsController#index.GET: 194 0.492 0.182 0.072 2.427
15
+ ScamsController#outputs.GET: 160 0.018 0.019 0.011 0.144
16
+ ScamsController#map.GET: 12 0.305 0.550 0.080 2.112
17
+ ScamsController#index.GET.atom: 9 0.160 0.046 0.135 0.283
18
+ ScamsController#index.GET.json: 9 0.832 0.222 0.599 1.131
19
+ ScamsController#index.GET.rss: 9 0.135 0.064 0.098 0.276
20
+ Api::V1::SleepwalkersController#update.PUT: 8 0.047 0.013 0.034 0.076
21
+ Api::V1::SleepwalkersController#create.POST: 3 0.215 0.220 0.052 0.526
22
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.046 0.008 0.038 0.057
23
+ Api::V1::MisinterpretationsController#show.GET: 2 0.022 0.006 0.016 0.028
24
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.100 0.079 0.021 0.179
25
+ Api::V1::SleepwalkersController#index.GET: 2 2.744 0.220 2.525 2.964
26
+ ScamsController#tag.GET.atom: 2 0.345 0.052 0.293 0.397
27
+ Api::V1::MisinterpretationsController#create.POST: 1 0.067 0.000 0.067 0.067
28
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.016 0.000 0.016 0.016
29
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.016 0.000 0.016 0.016
30
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.075 0.000 0.075 0.075
31
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.026 0.000 0.026 0.026
32
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.030 0.000 0.030 0.030
33
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.190 0.000 0.190 0.190
34
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.353 0.000 0.353 0.353
35
+ ScamsController#tag.GET.rss: 1 0.129 0.000 0.129 0.129
36
+ WindsController#favourites.GET.json: 1 0.016 0.000 0.016 0.016
37
+ WindsController#feeds.GET.atom: 1 0.058 0.000 0.058 0.058
38
+ WindsController#feeds.GET.json: 1 0.145 0.000 0.145 0.145
39
+ WindsController#feeds.GET.rss: 1 0.034 0.000 0.034 0.034
40
+ WindsController#show.GET: 1 2.006 0.000 2.006 2.006
41
+
42
+ Slowest Request Times:
43
+ ScamsController#show.GET took 37.721s
44
+ ScamsController#show.GET took 20.416s
45
+ ScamsController#show.GET took 19.060s
46
+ ScamsController#show.GET took 14.868s
47
+ ScamsController#show.GET took 14.730s
48
+ ScamsController#show.GET took 13.968s
49
+ AccomplicesController#history.GET.csv took 13.692s
50
+ ScamsController#show.GET took 13.298s
51
+ ScamsController#show.GET took 12.704s
52
+ ScamsController#show.GET took 12.608s
53
+
54
+ ------------------------------------------------------------------------
55
+
56
+ DB Times Summary: Count Avg Std Dev Min Max
57
+ ALL REQUESTS: 22909 0.102 0.679 0.000 36.529
58
+
59
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.009 0.038 0.004 2.967
60
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.010 0.053 0.004 3.056
61
+ HealthController#pulse.GET: 742 0.000 0.000 0.000 0.002
62
+ Api::V1::SleepwalkersController#show.GET: 710 0.011 0.058 0.002 1.479
63
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.007 0.009 0.002 0.151
64
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.004 0.002 0.001 0.029
65
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.009 0.032 0.003 0.624
66
+ AccomplicesController#history.GET.csv: 680 1.589 1.521 0.000 13.672
67
+ WindsController#feeds.GET: 320 0.050 0.182 0.004 1.893
68
+ ScamsController#show.GET: 317 3.277 3.576 0.004 36.529
69
+ ScamsController#index.GET: 194 0.048 0.039 0.000 0.508
70
+ ScamsController#outputs.GET: 160 0.002 0.007 0.000 0.042
71
+ ScamsController#map.GET: 12 0.032 0.042 0.009 0.160
72
+ ScamsController#index.GET.atom: 9 0.009 0.016 0.003 0.053
73
+ ScamsController#index.GET.json: 9 0.019 0.009 0.011 0.032
74
+ ScamsController#index.GET.rss: 9 0.004 0.001 0.003 0.005
75
+ Api::V1::SleepwalkersController#update.PUT: 8 0.009 0.008 0.004 0.030
76
+ Api::V1::SleepwalkersController#create.POST: 3 0.096 0.116 0.007 0.259
77
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.006 0.001 0.005 0.007
78
+ Api::V1::MisinterpretationsController#show.GET: 2 0.003 0.001 0.002 0.004
79
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.004 0.002 0.002 0.006
80
+ Api::V1::SleepwalkersController#index.GET: 2 0.279 0.051 0.228 0.330
81
+ ScamsController#tag.GET.atom: 2 0.143 0.120 0.023 0.262
82
+ Api::V1::MisinterpretationsController#create.POST: 1 0.040 0.000 0.040 0.040
83
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.003 0.000 0.003 0.003
84
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.003 0.000 0.003 0.003
85
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.022 0.000 0.022 0.022
86
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.003 0.000 0.003 0.003
87
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.004 0.000 0.004 0.004
88
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.023 0.000 0.023 0.023
89
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.024 0.000 0.024 0.024
90
+ ScamsController#tag.GET.rss: 1 0.032 0.000 0.032 0.032
91
+ WindsController#favourites.GET.json: 1 0.006 0.000 0.006 0.006
92
+ WindsController#feeds.GET.atom: 1 0.019 0.000 0.019 0.019
93
+ WindsController#feeds.GET.json: 1 0.004 0.000 0.004 0.004
94
+ WindsController#feeds.GET.rss: 1 0.002 0.000 0.002 0.002
95
+ WindsController#show.GET: 1 0.001 0.000 0.001 0.001
96
+
97
+ Slowest Total DB Times:
98
+ ScamsController#show.GET took 36.529s
99
+ ScamsController#show.GET took 19.298s
100
+ ScamsController#show.GET took 17.895s
101
+ ScamsController#show.GET took 14.336s
102
+ AccomplicesController#history.GET.csv took 13.672s
103
+ ScamsController#show.GET took 13.601s
104
+ ScamsController#show.GET took 13.581s
105
+ ScamsController#show.GET took 12.750s
106
+ ScamsController#show.GET took 12.077s
107
+ ScamsController#show.GET took 12.057s
108
+
109
+ ------------------------------------------------------------------------
110
+
111
+ Render Times Summary: Count Avg Std Dev Min Max
112
+ ALL REQUESTS: 22909 0.015 0.094 0.000 2.714
113
+
114
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.001 0.007 0.000 0.160
115
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.001 0.007 0.000 0.149
116
+ HealthController#pulse.GET: 742 0.001 0.010 0.000 0.141
117
+ Api::V1::SleepwalkersController#show.GET: 710 0.001 0.007 0.000 0.156
118
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.001 0.000 0.000 0.002
119
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.001 0.010 0.000 0.151
120
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.038 0.048 0.014 0.351
121
+ AccomplicesController#history.GET.csv: 680 0.001 0.001 0.000 0.012
122
+ WindsController#feeds.GET: 320 0.119 0.061 0.072 0.609
123
+ ScamsController#show.GET: 317 0.575 0.389 0.019 2.714
124
+ ScamsController#index.GET: 194 0.392 0.167 0.063 2.295
125
+ ScamsController#outputs.GET: 160 0.010 0.010 0.008 0.133
126
+ ScamsController#map.GET: 12 0.262 0.555 0.063 2.094
127
+ ScamsController#index.GET.atom: 9 0.128 0.003 0.124 0.132
128
+ ScamsController#index.GET.json: 9 0.353 0.047 0.226 0.394
129
+ ScamsController#index.GET.rss: 9 0.123 0.064 0.085 0.265
130
+ Api::V1::SleepwalkersController#update.PUT: 8 0.000 0.000 0.000 0.001
131
+ Api::V1::SleepwalkersController#create.POST: 3 0.000 0.000 0.000 0.000
132
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.000 0.000 0.000 0.001
133
+ Api::V1::MisinterpretationsController#show.GET: 2 0.007 0.002 0.005 0.009
134
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.001 0.001 0.000 0.001
135
+ Api::V1::SleepwalkersController#index.GET: 2 0.001 0.001 0.000 0.001
136
+ ScamsController#tag.GET.atom: 2 0.194 0.068 0.126 0.261
137
+ Api::V1::MisinterpretationsController#create.POST: 1 0.000 0.000 0.000 0.000
138
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.000 0.000 0.000 0.000
139
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.000 0.000 0.000 0.000
140
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.000 0.000 0.000 0.000
141
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.000 0.000 0.000 0.000
142
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.000 0.000 0.000 0.000
143
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.018 0.000 0.018 0.018
144
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.001 0.000 0.001 0.001
145
+ ScamsController#tag.GET.rss: 1 0.088 0.000 0.088 0.088
146
+ WindsController#favourites.GET.json: 1 0.003 0.000 0.003 0.003
147
+ WindsController#feeds.GET.atom: 1 0.031 0.000 0.031 0.031
148
+ WindsController#feeds.GET.json: 1 0.135 0.000 0.135 0.135
149
+ WindsController#feeds.GET.rss: 1 0.026 0.000 0.026 0.026
150
+ WindsController#show.GET: 1 2.001 0.000 2.001 2.001
151
+
152
+ Slowest Total Render Times:
153
+ ScamsController#show.GET took 2.714s
154
+ ScamsController#index.GET took 2.295s
155
+ ScamsController#show.GET took 2.293s
156
+ ScamsController#show.GET took 2.293s
157
+ ScamsController#show.GET took 2.253s
158
+ ScamsController#map.GET took 2.094s
159
+ WindsController#show.GET took 2.001s
160
+ ScamsController#show.GET took 1.952s
161
+ ScamsController#show.GET took 1.866s
162
+ ScamsController#show.GET took 1.773s
@@ -0,0 +1,162 @@
1
+ Request Times Summary: Count Avg Std Dev Min Max
2
+ ALL REQUESTS: 22909 0.180 0.725 0.001 37.721
3
+
4
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.097 0.071 0.027 3.020
5
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.070 0.071 0.040 3.103
6
+ HealthController#pulse.GET: 742 0.003 0.010 0.001 0.142
7
+ Api::V1::SleepwalkersController#show.GET: 710 0.061 0.080 0.013 1.504
8
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.054 0.047 0.022 0.359
9
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.029 0.028 0.011 0.185
10
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.064 0.062 0.027 0.663
11
+ AccomplicesController#history.GET.csv: 680 1.618 1.522 0.003 13.692
12
+ WindsController#feeds.GET: 320 0.183 0.195 0.083 1.989
13
+ ScamsController#show.GET: 317 3.869 3.697 0.034 37.721
14
+ ScamsController#index.GET: 194 0.492 0.182 0.072 2.427
15
+ ScamsController#outputs.GET: 160 0.018 0.019 0.011 0.144
16
+ ScamsController#map.GET: 12 0.305 0.550 0.080 2.112
17
+ ScamsController#index.GET.atom: 9 0.160 0.046 0.135 0.283
18
+ ScamsController#index.GET.json: 9 0.832 0.222 0.599 1.131
19
+ ScamsController#index.GET.rss: 9 0.135 0.064 0.098 0.276
20
+ Api::V1::SleepwalkersController#update.PUT: 8 0.047 0.013 0.034 0.076
21
+ Api::V1::SleepwalkersController#create.POST: 3 0.215 0.220 0.052 0.526
22
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.046 0.008 0.038 0.057
23
+ Api::V1::MisinterpretationsController#show.GET: 2 0.022 0.006 0.016 0.028
24
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.100 0.079 0.021 0.179
25
+ Api::V1::SleepwalkersController#index.GET: 2 2.744 0.220 2.525 2.964
26
+ ScamsController#tag.GET.atom: 2 0.345 0.052 0.293 0.397
27
+ Api::V1::MisinterpretationsController#create.POST: 1 0.067 0.000 0.067 0.067
28
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.016 0.000 0.016 0.016
29
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.016 0.000 0.016 0.016
30
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.075 0.000 0.075 0.075
31
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.026 0.000 0.026 0.026
32
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.030 0.000 0.030 0.030
33
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.190 0.000 0.190 0.190
34
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.353 0.000 0.353 0.353
35
+ ScamsController#tag.GET.rss: 1 0.129 0.000 0.129 0.129
36
+ WindsController#favourites.GET.json: 1 0.016 0.000 0.016 0.016
37
+ WindsController#feeds.GET.atom: 1 0.058 0.000 0.058 0.058
38
+ WindsController#feeds.GET.json: 1 0.145 0.000 0.145 0.145
39
+ WindsController#feeds.GET.rss: 1 0.034 0.000 0.034 0.034
40
+ WindsController#show.GET: 1 2.006 0.000 2.006 2.006
41
+
42
+ Slowest Request Times:
43
+ ScamsController#show.GET took 37.721s
44
+ ScamsController#show.GET took 20.416s
45
+ ScamsController#show.GET took 19.060s
46
+ ScamsController#show.GET took 14.868s
47
+ ScamsController#show.GET took 14.730s
48
+ ScamsController#show.GET took 13.968s
49
+ AccomplicesController#history.GET.csv took 13.692s
50
+ ScamsController#show.GET took 13.298s
51
+ ScamsController#show.GET took 12.704s
52
+ ScamsController#show.GET took 12.608s
53
+
54
+ ------------------------------------------------------------------------
55
+
56
+ DB Times Summary: Count Avg Std Dev Min Max
57
+ ALL REQUESTS: 22909 0.102 0.679 0.000 36.529
58
+
59
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.009 0.038 0.004 2.967
60
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.010 0.053 0.004 3.056
61
+ HealthController#pulse.GET: 742 0.000 0.000 0.000 0.002
62
+ Api::V1::SleepwalkersController#show.GET: 710 0.011 0.058 0.002 1.479
63
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.007 0.009 0.002 0.151
64
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.004 0.002 0.001 0.029
65
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.009 0.032 0.003 0.624
66
+ AccomplicesController#history.GET.csv: 680 1.589 1.521 0.000 13.672
67
+ WindsController#feeds.GET: 320 0.050 0.182 0.004 1.893
68
+ ScamsController#show.GET: 317 3.277 3.576 0.004 36.529
69
+ ScamsController#index.GET: 194 0.048 0.039 0.000 0.508
70
+ ScamsController#outputs.GET: 160 0.002 0.007 0.000 0.042
71
+ ScamsController#map.GET: 12 0.032 0.042 0.009 0.160
72
+ ScamsController#index.GET.atom: 9 0.009 0.016 0.003 0.053
73
+ ScamsController#index.GET.json: 9 0.019 0.009 0.011 0.032
74
+ ScamsController#index.GET.rss: 9 0.004 0.001 0.003 0.005
75
+ Api::V1::SleepwalkersController#update.PUT: 8 0.009 0.008 0.004 0.030
76
+ Api::V1::SleepwalkersController#create.POST: 3 0.096 0.116 0.007 0.259
77
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.006 0.001 0.005 0.007
78
+ Api::V1::MisinterpretationsController#show.GET: 2 0.003 0.001 0.002 0.004
79
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.004 0.002 0.002 0.006
80
+ Api::V1::SleepwalkersController#index.GET: 2 0.279 0.051 0.228 0.330
81
+ ScamsController#tag.GET.atom: 2 0.143 0.120 0.023 0.262
82
+ Api::V1::MisinterpretationsController#create.POST: 1 0.040 0.000 0.040 0.040
83
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.003 0.000 0.003 0.003
84
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.003 0.000 0.003 0.003
85
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.022 0.000 0.022 0.022
86
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.003 0.000 0.003 0.003
87
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.004 0.000 0.004 0.004
88
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.023 0.000 0.023 0.023
89
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.024 0.000 0.024 0.024
90
+ ScamsController#tag.GET.rss: 1 0.032 0.000 0.032 0.032
91
+ WindsController#favourites.GET.json: 1 0.006 0.000 0.006 0.006
92
+ WindsController#feeds.GET.atom: 1 0.019 0.000 0.019 0.019
93
+ WindsController#feeds.GET.json: 1 0.004 0.000 0.004 0.004
94
+ WindsController#feeds.GET.rss: 1 0.002 0.000 0.002 0.002
95
+ WindsController#show.GET: 1 0.001 0.000 0.001 0.001
96
+
97
+ Slowest Total DB Times:
98
+ ScamsController#show.GET took 36.529s
99
+ ScamsController#show.GET took 19.298s
100
+ ScamsController#show.GET took 17.895s
101
+ ScamsController#show.GET took 14.336s
102
+ AccomplicesController#history.GET.csv took 13.672s
103
+ ScamsController#show.GET took 13.601s
104
+ ScamsController#show.GET took 13.581s
105
+ ScamsController#show.GET took 12.750s
106
+ ScamsController#show.GET took 12.077s
107
+ ScamsController#show.GET took 12.057s
108
+
109
+ ------------------------------------------------------------------------
110
+
111
+ Render Times Summary: Count Avg Std Dev Min Max
112
+ ALL REQUESTS: 22909 0.015 0.094 0.000 2.714
113
+
114
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.001 0.007 0.000 0.160
115
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.001 0.007 0.000 0.149
116
+ HealthController#pulse.GET: 742 0.001 0.010 0.000 0.141
117
+ Api::V1::SleepwalkersController#show.GET: 710 0.001 0.007 0.000 0.156
118
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.001 0.000 0.000 0.002
119
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.001 0.010 0.000 0.151
120
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.038 0.048 0.014 0.351
121
+ AccomplicesController#history.GET.csv: 680 0.001 0.001 0.000 0.012
122
+ WindsController#feeds.GET: 320 0.119 0.061 0.072 0.609
123
+ ScamsController#show.GET: 317 0.575 0.389 0.019 2.714
124
+ ScamsController#index.GET: 194 0.392 0.167 0.063 2.295
125
+ ScamsController#outputs.GET: 160 0.010 0.010 0.008 0.133
126
+ ScamsController#map.GET: 12 0.262 0.555 0.063 2.094
127
+ ScamsController#index.GET.atom: 9 0.128 0.003 0.124 0.132
128
+ ScamsController#index.GET.json: 9 0.353 0.047 0.226 0.394
129
+ ScamsController#index.GET.rss: 9 0.123 0.064 0.085 0.265
130
+ Api::V1::SleepwalkersController#update.PUT: 8 0.000 0.000 0.000 0.001
131
+ Api::V1::SleepwalkersController#create.POST: 3 0.000 0.000 0.000 0.000
132
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.000 0.000 0.000 0.001
133
+ Api::V1::MisinterpretationsController#show.GET: 2 0.007 0.002 0.005 0.009
134
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.001 0.001 0.000 0.001
135
+ Api::V1::SleepwalkersController#index.GET: 2 0.001 0.001 0.000 0.001
136
+ ScamsController#tag.GET.atom: 2 0.194 0.068 0.126 0.261
137
+ Api::V1::MisinterpretationsController#create.POST: 1 0.000 0.000 0.000 0.000
138
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.000 0.000 0.000 0.000
139
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.000 0.000 0.000 0.000
140
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.000 0.000 0.000 0.000
141
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.000 0.000 0.000 0.000
142
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.000 0.000 0.000 0.000
143
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.018 0.000 0.018 0.018
144
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.001 0.000 0.001 0.001
145
+ ScamsController#tag.GET.rss: 1 0.088 0.000 0.088 0.088
146
+ WindsController#favourites.GET.json: 1 0.003 0.000 0.003 0.003
147
+ WindsController#feeds.GET.atom: 1 0.031 0.000 0.031 0.031
148
+ WindsController#feeds.GET.json: 1 0.135 0.000 0.135 0.135
149
+ WindsController#feeds.GET.rss: 1 0.026 0.000 0.026 0.026
150
+ WindsController#show.GET: 1 2.001 0.000 2.001 2.001
151
+
152
+ Slowest Total Render Times:
153
+ ScamsController#show.GET took 2.714s
154
+ ScamsController#index.GET took 2.295s
155
+ ScamsController#show.GET took 2.293s
156
+ ScamsController#show.GET took 2.293s
157
+ ScamsController#show.GET took 2.253s
158
+ ScamsController#map.GET took 2.094s
159
+ WindsController#show.GET took 2.001s
160
+ ScamsController#show.GET took 1.952s
161
+ ScamsController#show.GET took 1.866s
162
+ ScamsController#show.GET took 1.773s
@@ -0,0 +1,156 @@
1
+ Request Times Summary: Count Avg Std Dev Min Max
2
+ ALL REQUESTS: 16515 0.405 2.023 0.001 59.678
3
+
4
+ Api::V1::SleepwalkersController#update.PUT.xml: 6249 0.079 0.176 0.028 8.328
5
+ Api::V1::SleepwalkersController#update.PUT.csv: 6245 0.099 0.085 0.028 2.536
6
+ HealthController#pulse.GET: 791 0.002 0.005 0.001 0.129
7
+ Api::V1::SleepwalkersController#show.GET: 509 0.072 0.170 0.014 3.505
8
+ Api::V1::SleepwalkersController#show.GET.json: 496 0.076 0.224 0.026 4.874
9
+ Api::V1::SleepwalkersController#show.GET.xml: 491 0.065 0.065 0.023 0.624
10
+ Api::V1::SleepwalkersController#show.GET.csv: 474 0.029 0.029 0.011 0.239
11
+ AccomplicesController#history.GET.csv: 470 5.350 3.748 0.003 20.681
12
+ WindsController#feeds.GET: 237 0.201 0.153 0.096 1.304
13
+ ScamsController#show.GET: 236 11.793 8.460 0.038 59.678
14
+ ScamsController#index.GET: 147 0.600 0.395 0.076 3.638
15
+ ScamsController#outputs.GET: 114 0.037 0.063 0.011 0.404
16
+ Api::V1::SleepwalkersController#update.PUT: 9 0.051 0.017 0.035 0.090
17
+ ScamsController#index.GET.atom: 9 0.193 0.065 0.134 0.292
18
+ ScamsController#index.GET.rss: 9 0.132 0.054 0.095 0.242
19
+ Api::V1::SleepwalkersController#create.POST: 3 0.369 0.342 0.076 0.849
20
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.046 0.009 0.037 0.059
21
+ Api::V1::MisinterpretationsController#show.GET: 2 0.021 0.005 0.016 0.026
22
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.102 0.081 0.021 0.184
23
+ Api::V1::SleepwalkersController#index.GET: 2 2.887 0.327 2.560 3.214
24
+ ScamsController#map.GET: 2 1.075 0.933 0.141 2.008
25
+ ScamsController#tag.GET.atom: 2 0.462 0.185 0.277 0.647
26
+ Api::V1::MisinterpretationsController#create.POST: 1 0.075 0.000 0.075 0.075
27
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.016 0.000 0.016 0.016
28
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.089 0.000 0.089 0.089
29
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.027 0.000 0.027 0.027
30
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.030 0.000 0.030 0.030
31
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.340 0.000 0.340 0.340
32
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.385 0.000 0.385 0.385
33
+ ScamsController#tag.GET.rss: 1 0.134 0.000 0.134 0.134
34
+ WindsController#favourites.GET.json: 1 0.019 0.000 0.019 0.019
35
+ WindsController#feeds.GET.atom: 1 0.061 0.000 0.061 0.061
36
+ WindsController#feeds.GET.json: 1 0.013 0.000 0.013 0.013
37
+ WindsController#feeds.GET.rss: 1 0.037 0.000 0.037 0.037
38
+ WindsController#show.GET: 1 1.988 0.000 1.988 1.988
39
+
40
+ Slowest Request Times:
41
+ ScamsController#show.GET took 59.678s
42
+ ScamsController#show.GET took 50.577s
43
+ ScamsController#show.GET took 48.901s
44
+ ScamsController#show.GET took 38.601s
45
+ ScamsController#show.GET took 34.107s
46
+ ScamsController#show.GET took 30.878s
47
+ ScamsController#show.GET took 30.697s
48
+ ScamsController#show.GET took 29.660s
49
+ ScamsController#show.GET took 28.655s
50
+ ScamsController#show.GET took 28.548s
51
+
52
+ ------------------------------------------------------------------------
53
+
54
+ DB Times Summary: Count Avg Std Dev Min Max
55
+ ALL REQUESTS: 16515 0.327 1.973 0.000 57.834
56
+
57
+ Api::V1::SleepwalkersController#update.PUT.xml: 6249 0.020 0.169 0.004 8.285
58
+ Api::V1::SleepwalkersController#update.PUT.csv: 6245 0.012 0.062 0.004 2.482
59
+ HealthController#pulse.GET: 791 0.000 0.000 0.000 0.002
60
+ Api::V1::SleepwalkersController#show.GET: 509 0.020 0.160 0.001 3.456
61
+ Api::V1::SleepwalkersController#show.GET.json: 496 0.019 0.218 0.002 4.841
62
+ Api::V1::SleepwalkersController#show.GET.xml: 491 0.010 0.029 0.003 0.453
63
+ Api::V1::SleepwalkersController#show.GET.csv: 474 0.004 0.010 0.001 0.218
64
+ AccomplicesController#history.GET.csv: 470 5.320 3.747 0.000 20.632
65
+ WindsController#feeds.GET: 237 0.062 0.143 0.006 1.213
66
+ ScamsController#show.GET: 236 11.195 8.313 0.005 57.834
67
+ ScamsController#index.GET: 147 0.075 0.064 0.000 0.516
68
+ ScamsController#outputs.GET: 114 0.010 0.050 0.000 0.388
69
+ Api::V1::SleepwalkersController#update.PUT: 9 0.011 0.012 0.004 0.041
70
+ ScamsController#index.GET.atom: 9 0.009 0.015 0.002 0.051
71
+ ScamsController#index.GET.rss: 9 0.004 0.001 0.002 0.005
72
+ Api::V1::SleepwalkersController#create.POST: 3 0.174 0.220 0.008 0.485
73
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.006 0.000 0.006 0.007
74
+ Api::V1::MisinterpretationsController#show.GET: 2 0.003 0.001 0.002 0.003
75
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.005 0.002 0.003 0.006
76
+ Api::V1::SleepwalkersController#index.GET: 2 0.386 0.161 0.225 0.546
77
+ ScamsController#map.GET: 2 0.036 0.006 0.030 0.043
78
+ ScamsController#tag.GET.atom: 2 0.267 0.243 0.024 0.510
79
+ Api::V1::MisinterpretationsController#create.POST: 1 0.048 0.000 0.048 0.048
80
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.003 0.000 0.003 0.003
81
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.033 0.000 0.033 0.033
82
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.004 0.000 0.004 0.004
83
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.004 0.000 0.004 0.004
84
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.025 0.000 0.025 0.025
85
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.026 0.000 0.026 0.026
86
+ ScamsController#tag.GET.rss: 1 0.032 0.000 0.032 0.032
87
+ WindsController#favourites.GET.json: 1 0.010 0.000 0.010 0.010
88
+ WindsController#feeds.GET.atom: 1 0.019 0.000 0.019 0.019
89
+ WindsController#feeds.GET.json: 1 0.004 0.000 0.004 0.004
90
+ WindsController#feeds.GET.rss: 1 0.002 0.000 0.002 0.002
91
+ WindsController#show.GET: 1 0.001 0.000 0.001 0.001
92
+
93
+ Slowest Total DB Times:
94
+ ScamsController#show.GET took 57.834s
95
+ ScamsController#show.GET took 49.243s
96
+ ScamsController#show.GET took 47.576s
97
+ ScamsController#show.GET took 38.159s
98
+ ScamsController#show.GET took 32.935s
99
+ ScamsController#show.GET took 30.456s
100
+ ScamsController#show.GET took 30.270s
101
+ ScamsController#show.GET took 29.203s
102
+ ScamsController#show.GET took 27.959s
103
+ ScamsController#show.GET took 27.697s
104
+
105
+ ------------------------------------------------------------------------
106
+
107
+ Render Times Summary: Count Avg Std Dev Min Max
108
+ ALL REQUESTS: 16515 0.016 0.102 0.000 3.096
109
+
110
+ Api::V1::SleepwalkersController#update.PUT.xml: 6249 0.001 0.005 0.000 0.153
111
+ Api::V1::SleepwalkersController#update.PUT.csv: 6245 0.001 0.006 0.000 0.147
112
+ HealthController#pulse.GET: 791 0.001 0.005 0.000 0.128
113
+ Api::V1::SleepwalkersController#show.GET: 509 0.001 0.009 0.000 0.149
114
+ Api::V1::SleepwalkersController#show.GET.json: 496 0.039 0.047 0.014 0.340
115
+ Api::V1::SleepwalkersController#show.GET.xml: 491 0.001 0.001 0.000 0.003
116
+ Api::V1::SleepwalkersController#show.GET.csv: 474 0.000 0.006 0.000 0.128
117
+ AccomplicesController#history.GET.csv: 470 0.001 0.009 0.000 0.159
118
+ WindsController#feeds.GET: 237 0.124 0.063 0.073 0.605
119
+ ScamsController#show.GET: 236 0.579 0.407 0.021 2.787
120
+ ScamsController#index.GET: 147 0.457 0.288 0.066 3.096
121
+ ScamsController#outputs.GET: 114 0.016 0.029 0.008 0.152
122
+ Api::V1::SleepwalkersController#update.PUT: 9 0.000 0.000 0.000 0.001
123
+ ScamsController#index.GET.atom: 9 0.176 0.067 0.124 0.282
124
+ ScamsController#index.GET.rss: 9 0.118 0.056 0.084 0.231
125
+ Api::V1::SleepwalkersController#create.POST: 3 0.000 0.000 0.000 0.001
126
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.000 0.000 0.000 0.001
127
+ Api::V1::MisinterpretationsController#show.GET: 2 0.007 0.002 0.005 0.008
128
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.001 0.001 0.000 0.001
129
+ Api::V1::SleepwalkersController#index.GET: 2 0.001 0.000 0.001 0.001
130
+ ScamsController#map.GET: 2 1.025 0.944 0.081 1.969
131
+ ScamsController#tag.GET.atom: 2 0.186 0.058 0.128 0.244
132
+ Api::V1::MisinterpretationsController#create.POST: 1 0.000 0.000 0.000 0.000
133
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.000 0.000 0.000 0.000
134
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.001 0.000 0.001 0.001
135
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.001 0.000 0.001 0.001
136
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.000 0.000 0.000 0.000
137
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.020 0.000 0.020 0.020
138
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.001 0.000 0.001 0.001
139
+ ScamsController#tag.GET.rss: 1 0.092 0.000 0.092 0.092
140
+ WindsController#favourites.GET.json: 1 0.002 0.000 0.002 0.002
141
+ WindsController#feeds.GET.atom: 1 0.034 0.000 0.034 0.034
142
+ WindsController#feeds.GET.json: 1 0.003 0.000 0.003 0.003
143
+ WindsController#feeds.GET.rss: 1 0.029 0.000 0.029 0.029
144
+ WindsController#show.GET: 1 1.983 0.000 1.983 1.983
145
+
146
+ Slowest Total Render Times:
147
+ ScamsController#index.GET took 3.096s
148
+ ScamsController#show.GET took 2.787s
149
+ ScamsController#show.GET took 2.770s
150
+ ScamsController#show.GET took 2.358s
151
+ ScamsController#index.GET took 2.319s
152
+ ScamsController#show.GET took 2.105s
153
+ ScamsController#show.GET took 2.024s
154
+ WindsController#show.GET took 1.983s
155
+ ScamsController#map.GET took 1.969s
156
+ ScamsController#show.GET took 1.698s
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nbogie-production_log_analyzer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 119
4
+ hash: 117
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 5
9
9
  - 1
10
- - 2
11
- version: 1.5.1.2
10
+ - 3
11
+ version: 1.5.1.3
12
12
  platform: ruby
13
13
  authors:
14
14
  - Eric Hodel
@@ -63,6 +63,7 @@ executables:
63
63
  - action_errors
64
64
  - action_grep
65
65
  - pl_analyze
66
+ - pl_analyze_diff
66
67
  extensions: []
67
68
 
68
69
  extra_rdoc_files:
@@ -71,26 +72,35 @@ extra_rdoc_files:
71
72
  - Manifest.txt
72
73
  - README.txt
73
74
  files:
74
- - History.txt
75
- - LICENSE.txt
76
- - Manifest.txt
77
- - README.txt
78
- - Rakefile
75
+ - .autotest
79
76
  - bin/action_errors
80
77
  - bin/action_grep
81
78
  - bin/pl_analyze
79
+ - bin/pl_analyze_diff
80
+ - History.txt
82
81
  - lib/production_log/action_grep.rb
83
82
  - lib/production_log/analyzer.rb
84
83
  - lib/production_log/parser.rb
85
- - test/test.syslog.0.14.x.log
86
- - test/test.syslog.1.2.shortname.log
87
- - test/test.syslog.empty.log
88
- - test/test.syslog.log
84
+ - lib/report/report_differ.rb
85
+ - lib/report/report_parser.rb
86
+ - LICENSE.txt
87
+ - Manifest.txt
88
+ - Rakefile
89
+ - README.txt
90
+ - test/example_data/actual_diff.txt
91
+ - test/example_data/example.txt
92
+ - test/example_data/expected_diff.txt
93
+ - test/example_data/report_a.txt
94
+ - test/example_data/report_b.txt
89
95
  - test/test_action_grep.rb
90
96
  - test/test_analyzer.rb
91
97
  - test/test_parser.rb
92
98
  - test/test_report_differ.rb
93
99
  - test/test_report_parser.rb
100
+ - test/test.syslog.0.14.x.log
101
+ - test/test.syslog.1.2.shortname.log
102
+ - test/test.syslog.empty.log
103
+ - test/test.syslog.log
94
104
  - .gemtest
95
105
  homepage: http://seattlerb.rubyforge.org/production_log_analyzer
96
106
  licenses: []