unicorn-worker-killer 0.4.2 → 0.4.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: 420acce9af285728e9a01073187ff9a30d04c59f
4
- data.tar.gz: 3c64abf746d3b61cb62bffd8b9d504ec43ba62fb
5
- !binary "U0hBNTEy":
6
- metadata.gz: 5e3eb914600705eb38a473e6f87cab3433647be992248bffe1c4c4e6472cc03f689e34473dd087e72a359102d0d9979ab8773d347283722179f40ae8f0146f45
7
- data.tar.gz: d094e7db25d113ff730551ac538b4ccee4dd0bea1ae65629ab36fee762bdddbf40ea8a0ef31e03430dabd4383d98fbac08273eba970b8dfc9fca69a669625427
2
+ SHA1:
3
+ metadata.gz: c797670bfc0ae3167daa7fe1182233559315ff54
4
+ data.tar.gz: 2eef704073a541d87d25d67f2db032a4ab1a4e49
5
+ SHA512:
6
+ metadata.gz: 2e2ae23ab3aa77ead7054cc95142750dc48395922c357d37fb705cef2c65c325bce849dcd450b0a1ad6b6d5671014dc818d62ff3c2821858d963904e2bb76187
7
+ data.tar.gz: 571aafd204e1f2e02b782dc64d47531213f941b09737561750313e5aa4fb0f227187720ed355fc8d3eee9d3b2a089799f4609be63733b24b84032434db202722
data/ChangeLog CHANGED
@@ -1,3 +1,9 @@
1
+ Release 0.4.3 - 2013/12/23
2
+ * fix for occasional 'invalid argument' error
3
+
4
+ Release 0.4.2 - 2013/09/23
5
+ * `verbose` options provides verbose logging
6
+
1
7
  Release 0.4.1 - 2013/03/12
2
8
  * Kill attempts happen once per request, not in a loop
3
9
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.2
1
+ 0.4.3
@@ -1,4 +1,5 @@
1
1
  require 'unicorn/configuration'
2
+ require 'get_process_mem'
2
3
 
3
4
  module Unicorn::WorkerKiller
4
5
  class << self
@@ -44,7 +45,7 @@ module Unicorn::WorkerKiller
44
45
  end
45
46
 
46
47
  def randomize(integer)
47
- RUBY_VERSION > "1.9" ? Random.rand(integer) : rand(integer)
48
+ RUBY_VERSION > "1.9" ? Random.rand(integer.abs) : rand(integer)
48
49
  end
49
50
 
50
51
  def process_client(client)
@@ -54,9 +55,8 @@ module Unicorn::WorkerKiller
54
55
  @_worker_process_start ||= Time.now
55
56
  @_worker_memory_limit ||= @_worker_memory_limit_min + randomize(@_worker_memory_limit_max - @_worker_memory_limit_min + 1)
56
57
  @_worker_check_count += 1
57
-
58
58
  if @_worker_check_count % @_worker_check_cycle == 0
59
- rss = _worker_rss()
59
+ rss = GetProcessMem.new.bytes
60
60
  logger.info "#{self}: worker (pid: #{Process.pid}) using #{rss} bytes." if @_verbose
61
61
  if rss > @_worker_memory_limit
62
62
  logger.warn "#{self}: worker (pid: #{Process.pid}) exceeds memory limit (#{rss} bytes > #{@_worker_memory_limit} bytes)"
@@ -65,38 +65,6 @@ module Unicorn::WorkerKiller
65
65
  @_worker_check_count = 0
66
66
  end
67
67
  end
68
-
69
- private
70
-
71
- def _worker_rss
72
- proc_status = "/proc/#{Process.pid}/status"
73
- if File.exists? proc_status
74
- open(proc_status).each_line { |l|
75
- if l.include? 'VmRSS'
76
- ls = l.split
77
- if ls.length == 3
78
- value = ls[1].to_i
79
- unit = ls[2]
80
- case unit.downcase
81
- when 'kb'
82
- return value*(1024**1)
83
- when 'mb'
84
- return value*(1024**2)
85
- when 'gb'
86
- return value*(1024**3)
87
- end
88
- end
89
- end
90
- }
91
- end
92
-
93
- # Forking the child process sometimes fails under low memory condition.
94
- # It would be ideal for not forking the process to get RSS. For Linux,
95
- # this module reads '/proc/<pid>/status' to get RSS, but not for other
96
- # environments (e.g. MacOS and Windows).
97
- kb = `ps -o rss= -p #{Process.pid}`.to_i
98
- return kb * 1024
99
- end
100
68
  end
101
69
 
102
70
  module MaxRequests
@@ -117,7 +85,7 @@ module Unicorn::WorkerKiller
117
85
  end
118
86
 
119
87
  def randomize(integer)
120
- RUBY_VERSION > "1.9" ? Random.rand(integer) : rand(integer)
88
+ RUBY_VERSION > "1.9" ? Random.rand(integer.abs) : rand(integer)
121
89
  end
122
90
 
123
91
  def process_client(client)
@@ -14,7 +14,9 @@ Gem::Specification.new do |gem|
14
14
  gem.files = `git ls-files`.split("\n")
15
15
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
16
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ gem.licenses = ["GPLv2+", "Ruby 1.8"]
17
18
  gem.require_paths = ['lib']
18
- gem.add_dependency "unicorn", "~> 4"
19
+ gem.add_dependency "unicorn", "~> 4"
20
+ gem.add_dependency "get_process_mem", "~> 0"
19
21
  gem.add_development_dependency "rake", ">= 0.9.2"
20
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unicorn-worker-killer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kazuki Ohta
@@ -10,34 +10,48 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-09-23 00:00:00.000000000 Z
13
+ date: 2014-12-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: unicorn
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ~>
19
+ - - "~>"
20
20
  - !ruby/object:Gem::Version
21
21
  version: '4'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ~>
26
+ - - "~>"
27
27
  - !ruby/object:Gem::Version
28
28
  version: '4'
29
+ - !ruby/object:Gem::Dependency
30
+ name: get_process_mem
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
29
43
  - !ruby/object:Gem::Dependency
30
44
  name: rake
31
45
  requirement: !ruby/object:Gem::Requirement
32
46
  requirements:
33
- - - ! '>='
47
+ - - ">="
34
48
  - !ruby/object:Gem::Version
35
49
  version: 0.9.2
36
50
  type: :development
37
51
  prerelease: false
38
52
  version_requirements: !ruby/object:Gem::Requirement
39
53
  requirements:
40
- - - ! '>='
54
+ - - ">="
41
55
  - !ruby/object:Gem::Version
42
56
  version: 0.9.2
43
57
  description: Kill unicorn workers by memory and request counts
@@ -60,7 +74,9 @@ files:
60
74
  - lib/unicorn/worker_killer.rb
61
75
  - unicorn-worker-killer.gemspec
62
76
  homepage: https://github.com/kzk/unicorn-worker-killer
63
- licenses: []
77
+ licenses:
78
+ - GPLv2+
79
+ - Ruby 1.8
64
80
  metadata: {}
65
81
  post_install_message:
66
82
  rdoc_options: []
@@ -68,17 +84,17 @@ require_paths:
68
84
  - lib
69
85
  required_ruby_version: !ruby/object:Gem::Requirement
70
86
  requirements:
71
- - - ! '>='
87
+ - - ">="
72
88
  - !ruby/object:Gem::Version
73
89
  version: '0'
74
90
  required_rubygems_version: !ruby/object:Gem::Requirement
75
91
  requirements:
76
- - - ! '>='
92
+ - - ">="
77
93
  - !ruby/object:Gem::Version
78
94
  version: '0'
79
95
  requirements: []
80
96
  rubyforge_project:
81
- rubygems_version: 2.0.3
97
+ rubygems_version: 2.2.2
82
98
  signing_key:
83
99
  specification_version: 4
84
100
  summary: Kill unicorn workers by memory and request counts