openstreetmap-website/public/dispatch.fcgi
Tom Hughes bcbbf1944b Don't bother running GC as it doesn't seem to get as much memory back
anyway plus the run_gc! method in the fastcgi dispatcher is a disaster
as it disables GC completely except for when it is forced by making a
call to the run_gc! method.
2009-04-28 14:07:51 +00:00

49 lines
1.4 KiB
Ruby
Executable file

#!/usr/bin/ruby1.8
#
# You may specify the path to the FastCGI crash log (a log of unhandled
# exceptions which forced the FastCGI instance to exit, great for debugging)
# and the number of requests to process before running garbage collection.
#
# By default, the FastCGI crash log is RAILS_ROOT/log/fastcgi.crash.log
# and the GC period is nil (turned off). A reasonable number of requests
# could range from 10-100 depending on the memory footprint of your app.
#
# Example:
# # Default log path, normal GC behavior.
# RailsFCGIHandler.process!
#
# # Default log path, 50 requests between GC.
# RailsFCGIHandler.process! nil, 50
#
# # Custom log path, normal GC behavior.
# RailsFCGIHandler.process! '/var/log/myapp_fcgi_crash.log'
#
require File.dirname(__FILE__) + "/../config/environment"
require 'fcgi_handler'
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!