]> git.openstreetmap.org Git - rails.git/blobdiff - config/initializers/memory_limits.rb
Merge branch 'openID' of git://git.openstreetmap.org/rails into openid
[rails.git] / config / initializers / memory_limits.rb
index bab94b09a61c9d7a95f347c67cfcaddfa2a9c624..d3bd7a16b27627539a11a6253bf1073e82e6f98e 100644 (file)
@@ -1,44 +1,42 @@
 # Setup any specified hard limit on the virtual size of the process
-if APP_CONFIG.include?('hard_memory_limit') and Process.const_defined?(:RLIMIT_AS)
-  Process.setrlimit Process::RLIMIT_AS, APP_CONFIG['hard_memory_limit']*1024*1024, Process::RLIM_INFINITY
+if defined?(HARD_MEMORY_LIMIT) 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 APP_CONFIG.include?('soft_memory_limit') and defined?(PhusionPassenger)
+if defined?(SOFT_MEMORY_LIMIT) and defined?(PhusionPassenger)
   # Define some rack middleware to police the soft memory limit
-  module OSM
-    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 > APP_CONFIG['soft_memory_limit']
-          Process.kill("USR1", 0)
-        end
-
-        # Return the result of this request
-        [status, headers, body]
+  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
-      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
+      
+      # 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 OSM::MemoryLimit
+  Rails.configuration.middleware.use MemoryLimit
 end