From a31591bdc3f9731c4fe2bce829c171cfc34c6615 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Mon, 30 Mar 2015 21:15:19 +0100 Subject: [PATCH] Drop memory limit support The soft limit won't work with passenger 5 and causes spurious errors to be reported back to browsers, and in any case it doesn't actually seem to be necessary anymore. --- config/example.application.yml | 3 -- config/initializers/memory_limits.rb | 42 ---------------------------- 2 files changed, 45 deletions(-) delete mode 100644 config/initializers/memory_limits.rb diff --git a/config/example.application.yml b/config/example.application.yml index 2e41adbfc..bef0f2845 100644 --- a/config/example.application.yml +++ b/config/example.application.yml @@ -56,9 +56,6 @@ defaults: &defaults spam_threshold: 50 # Default legale (jurisdiction location) for contributor terms default_legale: GB - # Memory limits (in Mb) - #soft_memory_limit: 512 - #hard_memory_limit: 2048 # Location of GPX traces and images gpx_trace_dir: "/home/osm/traces" gpx_image_dir: "/home/osm/images" diff --git a/config/initializers/memory_limits.rb b/config/initializers/memory_limits.rb deleted file mode 100644 index b58c1f28e..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) && defined?(PhusionPassenger) && 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) && 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 - Process.kill("USR1", Process.pid) if resident_size > SOFT_MEMORY_LIMIT - - # 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 - fields[1].to_i / 256 - end - end - - # Install the memory limit checker - Rails.configuration.middleware.use MemoryLimit -end -- 2.43.2