sidekiq-worker-killer 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/sidekiq/worker_killer.rb +18 -1
- data/lib/sidekiq/worker_killer/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4269c4f6da1a1eff0beed38c5ced2f6fca035b83
|
4
|
+
data.tar.gz: 9d9fb7cb1bf97982dfb489ab5a397b06930c0620
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 716ea8ce12527e8653f0bc08c9cc16acc428917340907a9701e2e45d8f3996a157dacc634a96d0db74db3dfa949ba8ffb0377391837942df5d343d5b1870463f
|
7
|
+
data.tar.gz: 0f04a39f3ac416f231e7b075a34ce827f4c435183e1b2277d50ce1fb4392b66a7ddcef59c60d4c0e1392ac34c572849501624d8be642b3cb76495562ebd85cd5
|
data/README.md
CHANGED
@@ -32,7 +32,7 @@ The following options can be overrided.
|
|
32
32
|
| Option | Defaults | Description |
|
33
33
|
| ------- | ------- | ----------- |
|
34
34
|
| max_rss | 0 MB (disabled) | max RSS in megabytes. Above this, shutdown will be triggered. |
|
35
|
-
| grace_time | 900 seconds | when shutdown is triggered, the Sidekiq process will not accept new job
|
35
|
+
| grace_time | 900 seconds | when shutdown is triggered, the Sidekiq process will not accept new job and wait at most 15 minutes for running jobs to finish. |
|
36
36
|
| shutdown_wait | 30 seconds | when the grace time expires, still running jobs get 30 seconds to terminate. After that, kill signal is triggered. |
|
37
37
|
| kill_signal | SIGKILL | Signal to use kill Sidekiq process if it doesn't terminate. |
|
38
38
|
|
@@ -21,6 +21,8 @@ module Sidekiq
|
|
21
21
|
yield
|
22
22
|
# Skip if the max RSS is not exceeded
|
23
23
|
return unless @max_rss > 0 && current_rss > @max_rss
|
24
|
+
GC.start(full_mark: true, immediate_sweep: true)
|
25
|
+
return unless @max_rss > 0 && current_rss > @max_rss
|
24
26
|
# Launch the shutdown process
|
25
27
|
warn "current RSS #{current_rss} of #{identity} exceeds " \
|
26
28
|
"maximum RSS #{@max_rss}"
|
@@ -43,7 +45,7 @@ module Sidekiq
|
|
43
45
|
signal(quiet_signal, pid)
|
44
46
|
|
45
47
|
warn "shutting down #{identity} in #{@grace_time} seconds"
|
46
|
-
|
48
|
+
wait_job_finish_in_grace_time
|
47
49
|
|
48
50
|
warn "sending SIGTERM to #{identity}"
|
49
51
|
signal("SIGTERM", pid)
|
@@ -56,6 +58,21 @@ module Sidekiq
|
|
56
58
|
signal(@kill_signal, pid)
|
57
59
|
end
|
58
60
|
|
61
|
+
def wait_job_finish_in_grace_time
|
62
|
+
start = Time.now
|
63
|
+
loop do
|
64
|
+
break if start + @grace_time < Time.now || no_jobs_on_quiet_processes?
|
65
|
+
sleep(1)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def no_jobs_on_quiet_processes?
|
70
|
+
Sidekiq::ProcessSet.new.each do |process|
|
71
|
+
return false if !process["busy"].zero? && process["quiet"]
|
72
|
+
end
|
73
|
+
true
|
74
|
+
end
|
75
|
+
|
59
76
|
def current_rss
|
60
77
|
::GetProcessMem.new.mb
|
61
78
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-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
|
- Cyrille Courtiere
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: get_process_mem
|
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
97
|
version: '0'
|
98
98
|
requirements: []
|
99
99
|
rubyforge_project:
|
100
|
-
rubygems_version: 2.
|
100
|
+
rubygems_version: 2.5.2.3
|
101
101
|
signing_key:
|
102
102
|
specification_version: 4
|
103
103
|
summary: Sidekiq worker killer
|