Gibt es eine einfache Möglichkeit, Garbage Collection außerhalb des Anforderungszyklus in Passenger auszuführen?

8

Unicorn hat OobGC Rack-Middleware, mit der GC.start nachher ausgeführt werden kann eine bestimmte Anzahl von Anfragen.

Gibt es in Phusion Passenger eine ähnliche Sache?

    
eric 03.06.2011, 00:52
quelle

3 Antworten

3

Das Einhängen in PhusionPassenger::Rack::RequestHandler#process_request() ist der einzige Mechanismus, den ich gefunden habe.

Um dies auf ähnliche Weise wie beim Unicorn OobGC zu tun, können Sie das folgende Modul verwenden:

%Vor%

und rufen Sie es in einem Initialisierer mit auf:

%Vor%     
eric 12.09.2011, 18:47
quelle
5

Phusion Passenger 4 führt offiziell einen Out-of-Band-Speicherbereinigungsmechanismus ein. Es ist flexibler als das von Unicorn, indem es beliebige Arbeit ermöglicht, nicht nur die Garbage Collection. Ссылка

    
Hongli 05.05.2013 22:59
quelle
2

Sie müssen Passenger patchern. Das Ausführen eines GC.start nach dem Übergeben einer Anfrage stellt sicher, dass die Garbage-Collection niemals stattfindet, während eine Client-Anfrage gehalten wird. Dies ist eine einzeilige Änderung, die Sie möglicherweise in Betracht ziehen, wenn Sie versuchen, die durchschnittliche Anforderungszeit zu reduzieren.

Fügen Sie in lib / phusion_passenger / abstract_request_handler.rb accept_and_process_next_request hinzu und fügen Sie am Ende den Aufruf GC.start mit einem geeigneten Intervall hinzu.

Siehe dieses Commit für ein Beispiel (Danke, @raphaelcm).

    
Matthew Ratzloff 08.09.2011 16:35
quelle