rmemlimit 0.1 → 0.2
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.
- data/CHANGELOG +2 -0
- data/Manifest +1 -1
- data/README.md +9 -0
- data/lib/rmemlimit.rb +13 -13
- data/rmemlimit.gemspec +3 -3
- data/test/test_all.rb +1 -0
- metadata +3 -3
data/CHANGELOG
CHANGED
data/Manifest
CHANGED
data/README.md
CHANGED
|
@@ -14,6 +14,8 @@ instead, in a background thread.
|
|
|
14
14
|
|
|
15
15
|
gem 'rmemlimit' # in your Gemfile
|
|
16
16
|
|
|
17
|
+
Rmemlimit.setup # somewhere in app startup, or after forking
|
|
18
|
+
|
|
17
19
|
|
|
18
20
|
#### Set a memory limit for GC (requires linux /proc)
|
|
19
21
|
|
|
@@ -35,3 +37,10 @@ kill itself when it passes a threshold, you can do limit to say 1000MB:
|
|
|
35
37
|
|
|
36
38
|
(Or you can use the RUBY_KILL_MB environment variable)
|
|
37
39
|
|
|
40
|
+
|
|
41
|
+
#### Forking
|
|
42
|
+
|
|
43
|
+
When fork()ing in ruby 1.9, only the thread doing the fork keeps running in
|
|
44
|
+
the child. So you have to call Rmemlimit.setup in every child after
|
|
45
|
+
forking, or GC won't be running at all.
|
|
46
|
+
|
data/lib/rmemlimit.rb
CHANGED
|
@@ -5,18 +5,20 @@ class Rmemlimit
|
|
|
5
5
|
attr_accessor :gc_mb, :kill_mb
|
|
6
6
|
|
|
7
7
|
def gcthread
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
if !@gcthread || !@gcthread.alive?
|
|
9
|
+
@gcthread = Thread.new do
|
|
10
|
+
loop do
|
|
11
|
+
mb = rss_mb
|
|
12
|
+
if kill_mb && mb > kill_mb
|
|
13
|
+
STDERR.puts "#{self}: Exceeded kill memory limit (#{mb} > #{kill_Mb} MB)"
|
|
14
|
+
Process.kill(9, $$)
|
|
15
|
+
elsif gc_mb && mb > gc_mb
|
|
16
|
+
run_gc
|
|
17
|
+
elsif mb == 0 || !gc_mb || !kill_mb
|
|
18
|
+
run_gc
|
|
19
|
+
end
|
|
20
|
+
sleep 1
|
|
18
21
|
end
|
|
19
|
-
sleep 1
|
|
20
22
|
end
|
|
21
23
|
end
|
|
22
24
|
end
|
|
@@ -51,5 +53,3 @@ class Rmemlimit
|
|
|
51
53
|
end
|
|
52
54
|
|
|
53
55
|
end
|
|
54
|
-
|
|
55
|
-
Rmemlimit.setup
|
data/rmemlimit.gemspec
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = "rmemlimit"
|
|
5
|
-
s.version = "0.
|
|
5
|
+
s.version = "0.2"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
|
8
8
|
s.authors = ["Andrew Snow"]
|
|
9
|
-
s.date = "
|
|
9
|
+
s.date = "2013-01-11"
|
|
10
10
|
s.description = "Slow down garbage collector & limit ruby process memory"
|
|
11
11
|
s.email = "andrew@modulus.org"
|
|
12
12
|
s.extra_rdoc_files = ["CHANGELOG", "README.md", "lib/rmemlimit.rb"]
|
|
13
|
-
s.files = ["CHANGELOG", "README.md", "Rakefile", "lib/rmemlimit.rb", "test/test_all.rb", "
|
|
13
|
+
s.files = ["CHANGELOG", "Manifest", "README.md", "Rakefile", "lib/rmemlimit.rb", "test/test_all.rb", "rmemlimit.gemspec"]
|
|
14
14
|
s.homepage = "https://github.com/andys/rmemlimit"
|
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Rmemlimit", "--main", "README.md"]
|
|
16
16
|
s.require_paths = ["lib"]
|
data/test/test_all.rb
CHANGED
metadata
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
name: rmemlimit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: '0.
|
|
5
|
+
version: '0.2'
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Andrew Snow
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2013-01-11 00:00:00.000000000 Z
|
|
13
13
|
dependencies: []
|
|
14
14
|
description: Slow down garbage collector & limit ruby process memory
|
|
15
15
|
email: andrew@modulus.org
|
|
@@ -21,11 +21,11 @@ extra_rdoc_files:
|
|
|
21
21
|
- lib/rmemlimit.rb
|
|
22
22
|
files:
|
|
23
23
|
- CHANGELOG
|
|
24
|
+
- Manifest
|
|
24
25
|
- README.md
|
|
25
26
|
- Rakefile
|
|
26
27
|
- lib/rmemlimit.rb
|
|
27
28
|
- test/test_all.rb
|
|
28
|
-
- Manifest
|
|
29
29
|
- rmemlimit.gemspec
|
|
30
30
|
homepage: https://github.com/andys/rmemlimit
|
|
31
31
|
licenses: []
|