class PhusionPassenger::Rack::OutOfBandGc
def call(env)
def call(env) status, headers, body = @app.call(env) @mutex.synchronize do @request_count += 1 if @request_count == @frequency @request_count = 0 headers['X-Passenger-Request-OOB-Work'] = 'true' end end [status, headers, body] end
def initialize(app, frequency, logger = nil)
def initialize(app, frequency, logger = nil) @app = app @frequency = frequency @request_count = 0 @mutex = Mutex.new ::PhusionPassenger.on_event(:oob_work) do t0 = Time.now disabled = GC.enable GC.start GC.disable if disabled logger.info "Out Of Band GC finished in #{Time.now - t0} sec" if logger end end