]> git.openstreetmap.org Git - rails.git/blobdiff - config/initializers/memory_limits.rb
Merge branch 'master' into HEAD
[rails.git] / config / initializers / memory_limits.rb
diff --git a/config/initializers/memory_limits.rb b/config/initializers/memory_limits.rb
deleted file mode 100644 (file)
index ce51826..0000000
+++ /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