puma_worker_killer 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -3
- data/CHANGELOG.md +6 -1
- data/lib/puma_worker_killer.rb +6 -2
- data/lib/puma_worker_killer/version.rb +1 -1
- data/puma_worker_killer.gemspec +2 -2
- data/test/fixtures/rolling_pre_term.ru +1 -1
- data/test/fixtures/rolling_restart.ru +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 57d35810e8f71f67c6c6a964e53a9d0880b9d6a8cfd03b06f736aee29dae9494
|
4
|
+
data.tar.gz: 6b403245794f280c4c11e2ab9ef5ba7074055022da058599759f419394fb12b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a3d072a748058b192a0320cd17bd401a289a4ea0be1df2d0f7946eaaecaf97747b3b920cd502650bf6a55d4fe7457720888a6132155b02a0e30bb708e9bd5d7
|
7
|
+
data.tar.gz: 9adfab59ed940a36eba60c123f3bbb25de11dd1717520df433671da45bb88ddbc6a12b4b1e7e3620e83acb5189399980accc27600f7c668e9fda438a5ae033cd
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/lib/puma_worker_killer.rb
CHANGED
@@ -6,12 +6,14 @@ module PumaWorkerKiller
|
|
6
6
|
extend self
|
7
7
|
|
8
8
|
attr_accessor :ram, :frequency, :percent_usage, :rolling_restart_frequency,
|
9
|
+
:rolling_restart_splay_seconds,
|
9
10
|
:reaper_status_logs, :pre_term, :rolling_pre_term, :on_calculation
|
10
11
|
|
11
12
|
self.ram = 512 # mb
|
12
13
|
self.frequency = 10 # seconds
|
13
14
|
self.percent_usage = 0.99 # percent of RAM to use
|
14
15
|
self.rolling_restart_frequency = 6 * 3600 # 6 hours in seconds
|
16
|
+
self.rolling_restart_splay_seconds = 0.0..300.0 # 0 to 5 minutes in seconds
|
15
17
|
self.reaper_status_logs = true
|
16
18
|
self.pre_term = nil
|
17
19
|
self.rolling_pre_term = nil
|
@@ -30,8 +32,10 @@ module PumaWorkerKiller
|
|
30
32
|
enable_rolling_restart(rolling_restart_frequency) if rolling_restart_frequency
|
31
33
|
end
|
32
34
|
|
33
|
-
def enable_rolling_restart(frequency = rolling_restart_frequency
|
34
|
-
|
35
|
+
def enable_rolling_restart(frequency = rolling_restart_frequency,
|
36
|
+
splay_seconds = rolling_restart_splay_seconds)
|
37
|
+
# Randomize so all workers don't restart at the exact same time across multiple machines.
|
38
|
+
frequency += rand(splay_seconds)
|
35
39
|
AutoReap.new(frequency, RollingRestart.new(nil, rolling_pre_term)).start
|
36
40
|
end
|
37
41
|
end
|
data/puma_worker_killer.gemspec
CHANGED
@@ -21,8 +21,8 @@ Gem::Specification.new do |gem|
|
|
21
21
|
|
22
22
|
gem.add_dependency 'get_process_mem', '~> 0.2'
|
23
23
|
gem.add_dependency 'puma', '>= 2.7', '< 5'
|
24
|
-
gem.add_development_dependency 'rack', '~>
|
25
|
-
gem.add_development_dependency 'rake', '~>
|
24
|
+
gem.add_development_dependency 'rack', '~> 2.0'
|
25
|
+
gem.add_development_dependency 'rake', '~> 13.0'
|
26
26
|
gem.add_development_dependency 'test-unit', '>= 0'
|
27
27
|
gem.add_development_dependency 'wait_for_it', '~> 0.1'
|
28
28
|
end
|
@@ -5,6 +5,6 @@ load File.expand_path('fixture_helper.rb', __dir__)
|
|
5
5
|
PumaWorkerKiller.config do |config|
|
6
6
|
config.rolling_pre_term = ->(worker) { puts("About to terminate (rolling) worker: #{worker.pid}") }
|
7
7
|
end
|
8
|
-
PumaWorkerKiller.enable_rolling_restart(1) # 1 second
|
8
|
+
PumaWorkerKiller.enable_rolling_restart(1, 0..5.0) # 1 second, short 1-5s splay.
|
9
9
|
|
10
10
|
run HelloWorldApp
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puma_worker_killer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Schneeman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: get_process_mem
|
@@ -50,28 +50,28 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '2.0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
60
|
+
version: '2.0'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: rake
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '13.0'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
74
|
+
version: '13.0'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: test-unit
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|