sidekiq-worker-killer 0.2.1 → 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/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
|