scout_apm 0.1.11 → 0.1.12
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c3c774cf96a6a211650f1fffabed007073ccb93
|
4
|
+
data.tar.gz: bd321d8d0567c66caeb6a96ca3a65a72a48db39a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3071d8c222b7e3954aaa04a3eb25fe5ea89b780894be1763173ff5b061cf4cc565659267b3f353754dfeb16f9927db7108c22a6d60055f880d8561a74194e7e
|
7
|
+
data.tar.gz: 84ab4cc77107f927537587f080b6b23950330da0075c9819f03c4038929006087256fce9449f54f39ae51a98ee91678307fe836abc66ccbf2e75c0e20c229118
|
data/CHANGELOG.markdown
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
# 0.1.12
|
2
|
+
|
3
|
+
* Fix Puma integration. Now detects both branches of preload_app! setting.
|
4
|
+
* Enhance Cpu instrumentation
|
5
|
+
|
6
|
+
# 0.1.11
|
7
|
+
|
8
|
+
* Post on-load application details in a background thread to prevent potential
|
9
|
+
pauses during app boot
|
10
|
+
|
1
11
|
# 0.1.10
|
2
12
|
|
3
13
|
* Prevent instrumentation in non-web contexts. Prevents agent running in rails
|
data/lib/scout_apm/agent.rb
CHANGED
@@ -153,9 +153,7 @@ module ScoutApm
|
|
153
153
|
def start_background_worker?
|
154
154
|
return true if environment.app_server == :thin
|
155
155
|
return true if environment.app_server == :webrick
|
156
|
-
return
|
157
|
-
|
158
|
-
false
|
156
|
+
return !environment.forking?
|
159
157
|
end
|
160
158
|
|
161
159
|
# Creates the worker thread. The worker thread is a loop that runs continuously. It sleeps for +Agent#period+ and when it wakes,
|
@@ -27,6 +27,7 @@ module ScoutApm
|
|
27
27
|
:framework => ScoutApm::Environment.instance.framework_integration.human_name,
|
28
28
|
:framework_version => ScoutApm::Environment.instance.framework_integration.version,
|
29
29
|
:environment => ScoutApm::Environment.instance.framework_integration.env,
|
30
|
+
:app_server => ScoutApm::Environment.instance.app_server,
|
30
31
|
:ruby_version => RUBY_VERSION,
|
31
32
|
:hostname => ScoutApm::Environment.instance.hostname,
|
32
33
|
:database_engine => ScoutApm::Environment.instance.database_engine,
|
@@ -25,6 +25,7 @@ module ScoutApm
|
|
25
25
|
"Process CPU"
|
26
26
|
end
|
27
27
|
|
28
|
+
# TODO: Figure out a good default instead of nil
|
28
29
|
def run
|
29
30
|
res = nil
|
30
31
|
|
@@ -34,11 +35,24 @@ module ScoutApm
|
|
34
35
|
stime = t.stime
|
35
36
|
|
36
37
|
wall_clock_elapsed = now - last_run
|
38
|
+
if wall_clock_elapsed < 0
|
39
|
+
save_times(now, utime, stime)
|
40
|
+
logger.warn "#{human_name}: Negative time elapsed. now: #{now}, last_run: #{last_run}, total time: #{wall_clock_elapsed}"
|
41
|
+
return nil
|
42
|
+
end
|
37
43
|
|
38
44
|
utime_elapsed = utime - last_utime
|
39
45
|
stime_elapsed = stime - last_stime
|
40
46
|
process_elapsed = utime_elapsed + stime_elapsed
|
41
47
|
|
48
|
+
# This can happen right after a fork. This class starts up in
|
49
|
+
# pre-fork, records {u,s}time, then forks. This resets {u,s}time to 0
|
50
|
+
if process_elapsed < 0
|
51
|
+
save_times(now, utime, stime)
|
52
|
+
logger.warn "#{human_name}: Negative process time elapsed. utime: #{utime_elapsed}, stime: #{stime_elapsed}, total time: #{process_elapsed}"
|
53
|
+
return nil
|
54
|
+
end
|
55
|
+
|
42
56
|
# Normalized to # of processors
|
43
57
|
normalized_wall_clock_elapsed = wall_clock_elapsed * num_processors
|
44
58
|
|
@@ -49,14 +63,24 @@ module ScoutApm
|
|
49
63
|
( process_elapsed / normalized_wall_clock_elapsed )*100
|
50
64
|
end
|
51
65
|
|
52
|
-
|
53
|
-
|
54
|
-
|
66
|
+
if res < 0
|
67
|
+
save_times(now, utime, stime)
|
68
|
+
logger.warn "#{human_name}: Negative CPU. #{process_elapsed} / #{normalized_wall_clock_elapsed} * 100 ==> #{res}"
|
69
|
+
return nil
|
70
|
+
end
|
71
|
+
|
72
|
+
save_times(now, utime, stime)
|
55
73
|
|
56
|
-
logger.debug "#{human_name}: #{res.inspect} [#{
|
74
|
+
logger.debug "#{human_name}: #{res.inspect} [#{num_processors} CPU(s)]"
|
57
75
|
|
58
76
|
return res
|
59
77
|
end
|
78
|
+
|
79
|
+
def save_times(now, utime, stime)
|
80
|
+
self.last_run = now
|
81
|
+
self.last_utime = utime
|
82
|
+
self.last_stime = stime
|
83
|
+
end
|
60
84
|
end
|
61
85
|
end
|
62
86
|
end
|
@@ -11,14 +11,21 @@ module ScoutApm
|
|
11
11
|
:puma
|
12
12
|
end
|
13
13
|
|
14
|
-
def forking
|
14
|
+
def forking?
|
15
|
+
return false unless defined?(::Puma)
|
16
|
+
options = ::Puma.cli_config.instance_variable_get(:@options)
|
17
|
+
logger.debug options.inspect
|
18
|
+
options[:preload_app]
|
19
|
+
rescue
|
20
|
+
false
|
21
|
+
end
|
15
22
|
|
16
23
|
def present?
|
17
|
-
defined?(::Puma) && File.basename($0)
|
24
|
+
defined?(::Puma) && (File.basename($0) =~ /\Apuma/)
|
18
25
|
end
|
19
26
|
|
20
27
|
def install
|
21
|
-
Puma.cli_config.options[:before_worker_boot] << Proc.new do
|
28
|
+
::Puma.cli_config.options[:before_worker_boot] << Proc.new do
|
22
29
|
logger.debug "Installing Puma worker loop."
|
23
30
|
ScoutApm::Agent.instance.start_background_worker
|
24
31
|
end
|
data/lib/scout_apm/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scout_apm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derek Haynes
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-09-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|