X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/69f535af329b0a9fb345e1d22bf6830f6bea5937..34e3e51456774127d43408b7ab65c24f41373f62:/config/initializers/memory_limits.rb diff --git a/config/initializers/memory_limits.rb b/config/initializers/memory_limits.rb index d3bd7a16b..1b79df7f4 100644 --- a/config/initializers/memory_limits.rb +++ b/config/initializers/memory_limits.rb @@ -1,5 +1,5 @@ # Setup any specified hard limit on the virtual size of the process -if defined?(HARD_MEMORY_LIMIT) and Process.const_defined?(:RLIMIT_AS) +if defined?(HARD_MEMORY_LIMIT) and defined?(PhusionPassenger) and Process.const_defined?(:RLIMIT_AS) Process.setrlimit Process::RLIMIT_AS, HARD_MEMORY_LIMIT*1024*1024, Process::RLIM_INFINITY end @@ -11,16 +11,16 @@ if defined?(SOFT_MEMORY_LIMIT) and defined?(PhusionPassenger) def initialize(app) @app = app end - + def call(env) # Process this requst status, headers, body = @app.call(env) - + # Restart if we've hit our memory limit if resident_size > SOFT_MEMORY_LIMIT Process.kill("USR1", Process.pid) end - + # Return the result of this request [status, headers, body] end @@ -31,7 +31,7 @@ if defined?(SOFT_MEMORY_LIMIT) and defined?(PhusionPassenger) fields = File.open("/proc/self/statm") do |file| fields = file.gets.split(" ") end - + # Return resident size in megabytes return fields[1].to_i / 256 end