3 # You may specify the path to the FastCGI crash log (a log of unhandled
4 # exceptions which forced the FastCGI instance to exit, great for debugging)
5 # and the number of requests to process before running garbage collection.
7 # By default, the FastCGI crash log is RAILS_ROOT/log/fastcgi.crash.log
8 # and the GC period is nil (turned off). A reasonable number of requests
9 # could range from 10-100 depending on the memory footprint of your app.
12 # # Default log path, normal GC behavior.
13 # RailsFCGIHandler.process!
15 # # Default log path, 50 requests between GC.
16 # RailsFCGIHandler.process! nil, 50
18 # # Custom log path, normal GC behavior.
19 # RailsFCGIHandler.process! '/var/log/myapp_fcgi_crash.log'
21 require File.dirname(__FILE__) + "/../config/environment"
22 require 'fcgi_handler'
24 class OpenStreetMapFCGIHandler < RailsFCGIHandler
26 def process_request(cgi)
27 # Call superclass to process the request
30 # Restart if we've hit our memory limit
31 if resident_size > 512
32 dispatcher_log :info, "restarting due to memory limit"
38 # Read statm to get process sizes. Format is
39 # Size RSS Shared Text Lib Data
40 fields = File.open("/proc/self/statm") do |file|
41 fields = file.gets.split(" ")
44 # Return resident size in megabytes
45 return fields[1].to_i / 256
49 OpenStreetMapFCGIHandler.process!