capelinhos 0.5.0 → 0.7.0

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
  SHA256:
3
- metadata.gz: 259f8c17e8e1d4907906ad0a5a69bc4c7ff46f284f4492657bdcdd9eb77dc1ed
4
- data.tar.gz: 16156b9dd200f5ad4add2b66e130044f3bf4c0caf052370ff382b3ef299c89b7
3
+ metadata.gz: 30ba1d3bdde57e67c96ca434db1ff4d5d92f10482bea94657c2e22e71ad5be3c
4
+ data.tar.gz: f0c6ab2f8a48c95cd5e8e4f9b6e4f3c5ee7edc5a417f76232c298bc6e314f472
5
5
  SHA512:
6
- metadata.gz: 37e66c20f4a62e8965766564aaee96d66e730c36011872cbd62fdb93d8061e4143255fdff603652d62ac542372ac935196d11698d9e49ada9b9152f5afd8bfb3
7
- data.tar.gz: 99551500dbf149aeea945c4cad61950cf4b36a752381cc2b8791b9af06b1ff2e674d0828bb296b54e6bc4eb9e4f34ad541fb42d446709861735bfb1854c23109
6
+ metadata.gz: 84db606af25c313d13bcf42cb5d1da22f508db71599e5842d4d18a9bca1e44f08fb459f092282d7728c543d8854b791f77d76060d4df1267bf4b039a98bbed56
7
+ data.tar.gz: d490f9e85e3e84a970fffa7b1ee83d64580e278014c5c57b908e2948aa2be745810d3a65812a41165ca06d887f11bd14080ab7f852698e66ed5ad9665f0d9b6a
data/README.md CHANGED
@@ -4,7 +4,9 @@ This gem gracefully stops Passenger Ruby processes that have exceeded a memory t
4
4
 
5
5
  If Phusion Passenger is configured with `PassengerMinInstances` and the number of processes is under that number, then a new process should replace the processes that were shutdown.
6
6
 
7
- Note: This doesn't skip active long running sessions. This feature be added as a default in the future.
7
+ ## TODO
8
+
9
+ * Implement support for multiple Passenger Instances
8
10
 
9
11
  ## Installation
10
12
 
@@ -18,8 +20,10 @@ If bundler is not being used to manage dependencies, install the gem by executin
18
20
 
19
21
  ## Usage
20
22
 
21
- # kill up to 3 processes that use more than 400 megabytes
23
+ ```cli
24
+ # shutdown up to 3 processes that use more than 400 megabytes of memory
22
25
  $ capelinos --max-memory 400 --max-processes 3
26
+ ```
23
27
 
24
28
  ## Development
25
29
 
data/exe/capelinhos CHANGED
File without changes
@@ -14,9 +14,15 @@ module Capelinhos
14
14
  stats = AdminTools::MemoryStats.new
15
15
  processes = stats.passenger_processes
16
16
 
17
+ if !supports_private_dirty_rss?(processes)
18
+ puts "This system doesn't support private dirty RSS. Falling back to RSS"
19
+ end
20
+
21
+ rss_type = supports_private_dirty_rss?(processes) ? :private_dirty_rss : :rss
22
+
17
23
  processes.each do |process|
18
24
  if process.name.include?('RubyApp')
19
- rss_megabytes = process.rss / 1024
25
+ rss_megabytes = process.send(rss_type) / 1024
20
26
  if rss_megabytes > @memory_threshold
21
27
  shutdown_process(process.pid)
22
28
  processes_killed += 1
@@ -31,6 +37,10 @@ module Capelinhos
31
37
 
32
38
  private
33
39
 
40
+ def supports_private_dirty_rss?(processes)
41
+ processes.any?{|p| !p.private_dirty_rss.nil?}
42
+ end
43
+
34
44
  def shutdown_process(pid)
35
45
  _instance = instance
36
46
  request = Net::HTTP::Post.new("/pool/detach_process.json")
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Capelinhos
4
- VERSION = "0.5.0"
4
+ VERSION = "0.7.0"
5
5
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capelinhos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Hallett
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-30 00:00:00.000000000 Z
11
+ date: 2024-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: json
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: passenger
29
15
  requirement: !ruby/object:Gem::Requirement