Meine Rails 4.1 App verbindet sich über SSH mit einem zweiten, nicht primären Server für Backend-Jobs. Wenn die Rails-App also täglich neu gestartet wird, muss die SSH-Verbindung aktiv sein (der zweite, nicht primäre Server muss leben/steigen), andernfalls stürzt die App ab. Dies ist darauf zurückzuführen, dass das eifrige Laden standardmäßig in production.rb
(config.eager_load = true
) auf "True" gesetzt ist.Welchen Leistungseinfluss hat die Deaktivierung von eager_load in production.rb?
Ich bin versucht, diese Abhängigkeit durch die Deaktivierung von Eager Lasten zu brechen, aber ich bin nicht in der Lage, viele Informationen über die Auswirkungen auf die Leistung zu finden. Also, meine Fragen sind ...
1) Wenn auf false
eingestellt ist, wird das einfach die Startzeit der App verlangsamen, oder wird die App eifrig Ressourcen laden das erste Mal, wenn sie getroffen werden?
3) Wenn einfach ausgeschaltet ist, in welchem Maße wird sich dies auf die Leistung der App auswirken (eher subjektive Frage)?
2) Das Modell, das die SSH-Verbindung durchführt, befindet sich unter dem Ordner app\models\legacy
. Anstatt auf false zu ändern, kann dieser Ordner von den geladenen Ressourcen ausgeschlossen werden? Wenn das so ist, wie? Ich glaube, ich müsste config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**/}')]
bearbeiten, aber nicht ganz sicher.
production.rb:
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both thread web servers
# and those relying on copy on write to perform better.
# Rake tasks automatically ignore this option for performance.
config.eager_load = true
Anstatt das eifrige Laden zu ändern, konnten Sie die Klasse nicht ändern, so dass das Laden/Parsing der Klasse nicht direkt auf ssh zugreift? Oder es robuster machen? – nathanvda