capelinhos 0.5.0 → 0.7.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 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