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 +4 -4
- data/README.md +6 -2
- data/exe/capelinhos +0 -0
- data/lib/capelinhos/processor.rb +11 -1
- data/lib/capelinhos/version.rb +1 -1
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30ba1d3bdde57e67c96ca434db1ff4d5d92f10482bea94657c2e22e71ad5be3c
|
4
|
+
data.tar.gz: f0c6ab2f8a48c95cd5e8e4f9b6e4f3c5ee7edc5a417f76232c298bc6e314f472
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
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
|
data/lib/capelinhos/processor.rb
CHANGED
@@ -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.
|
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")
|
data/lib/capelinhos/version.rb
CHANGED
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.
|
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-
|
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
|