X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/f730147766ee891fb3d3fd3e3acb151010def20d..550c4a3a45814fde5c809334c85f1ebc47659a82:/config/initializers/memory_limits.rb diff --git a/config/initializers/memory_limits.rb b/config/initializers/memory_limits.rb deleted file mode 100644 index ce518269f..000000000 --- a/config/initializers/memory_limits.rb +++ /dev/null @@ -1,42 +0,0 @@ -# Setup any specified hard limit on the virtual size of the process -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 - -# If we're running under passenger and a soft memory limit is -# configured then setup some rack middleware to police the limit -if defined?(SOFT_MEMORY_LIMIT) and defined?(PhusionPassenger) - # Define some rack middleware to police the soft memory limit - class MemoryLimit - 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 - private - def resident_size - # Read statm to get process sizes. Format is - # Size RSS Shared Text Lib Data - 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 - end - - # Install the memory limit checker - Rails.configuration.middleware.use MemoryLimit -end