Ich versuche, Garbage Collection Out-of-Band (sobald eine Anfrage ihre Antwort fertiggestellt hat) in meiner Ruby on Rails-Anwendung auszuführen. Ich habe folgendes meine config.ru:Out-of-Band-Garbage Collection mit Unicorn + Rack ausgeführt
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
begin
require 'unicorn/oob_gc'
rescue LoadError, NameError
end
# Out-of-band GC, runs GC after every 10th request and after the response
# has been delivered.
begin
use Unicorn::OobGC, interval=10
rescue NameError
end
run MyApp::Application
GC.start
ich aber an meinem NewRelic Portal suchen, und die meisten Web-Transaktionen deuten, dass zumindest 110-150ms im Durchschnitt tun Garbage Collection ausgegeben wird. Soll Unicorn :: OoobGC dies außerhalb des Rahmens der eigentlichen Anfrage tun? Wenn ja, warum wird dies in der Web-Transaktion angezeigt? Wie kann ich die Zeit für die Garbage Collection außerhalb des Kontexts einer Webanfrage verbringen, sodass die Antwortzeiten der Clients schneller sind? Die aufgewendete CPU-Zeit ist immer noch dieselbe, da sie im Hintergrund ausgeführt werden muss, jedoch im Hintergrund besser, als eine Anfrage-Pipeline zu halten.