X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/06f3473d1c64d2e0a1ecc6f1a9c4679a52bc4761..fd35873a4be94155746b6d410d601aa97e93687f:/public/dispatch.fcgi diff --git a/public/dispatch.fcgi b/public/dispatch.fcgi index 3169ba267..3a13f230c 100755 --- a/public/dispatch.fcgi +++ b/public/dispatch.fcgi @@ -21,4 +21,29 @@ require File.dirname(__FILE__) + "/../config/environment" require 'fcgi_handler' -RailsFCGIHandler.process! +class OpenStreetMapFCGIHandler < RailsFCGIHandler +protected + def process_request(cgi) + # Call superclass to process the request + super + + # Restart if we've hit our memory limit + if resident_size > 512 + dispatcher_log :info, "restarting due to memory limit" + restart! + end + end + + 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 + +OpenStreetMapFCGIHandler.process!