Próbuję uruchomić zbieranie śmieci poza pasmem (gdy żądanie zakończyło podawanie odpowiedzi) w mojej aplikacji Ruby on Rails. I dodaje następujące do mojego config.ru:Kończy się zbieranie śmieci z zespołu przy pomocy Unicorn + Rack
# 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
Patrzę na mojego NewRelic portalu jednak i większość transakcji internetowych wskazują, że co najmniej 110-150ms spędza średnio robi zbierania śmieci. Czy Unicorn :: OoobGC powinien zrobić to poza zasięgiem rzeczywistej prośby? Jeśli tak, dlaczego pojawia się w transakcji internetowej? W jaki sposób mogę wydłużyć czas spędzany na zbieranie śmieci poza kontekstem żądania internetowego, aby postrzegane czasy reakcji klientów były szybsze? Wydany czas procesora będzie nadal taki sam, ponieważ musi się odbywać w tle, ale lepiej w tle niż podtrzymywanie potoku żądania.