Aufwärmen mit hohem Durchsatz Java-Anwendungen
-
20-09-2019 - |
Frage
Ich hat vor kurzem über Szenarien gelernt, die eine App erfordert aufwärmen (mit hohen Durchsatzanforderungen), bevor sie real Anfragen dienen starten. Die Logik dahinter war JIT zu ermöglichen, seine Leistung Magie zu tun!
Ist das eine Norm für Java-Anwendungen oder ist dies in der Regel für Speicher schwer getan (Footprint) apps?
Lösung
Wenn Sie sprechen über eine High-Traffic-Webapp / Website dann ist JIT ein sehr kleines Problem. Das größte Problem in der Aufwärmphase (Bestücken), um alle Cache-Ebenen Sie haben müssen. ZB ehcache Regionen, die von Hibernate bevölkert werden . Das ist, weil IO ähnliche Operationen sind um Größenordnungen langsamer als alles, was in der CPU geschieht (das heißt, wenn Sie Fraktale Berechnung:)
Andere Tipps
Die Frage ist, wann würden Sie wollen geht aus dem Weg, , dies zu tun?
Wenn Sie einen Webapp ausrollen, und es ist sofort zu leben, dann, während Sie „warming“ es, du bist das Hinzufügen zusätzliche Last, die kontraproduktiv ist. Ähnliches gilt, wenn eine Desktop-Anwendung startet. Kein Punkt in Erwärmung, wenn der Benutzer wird sofort starten Sie es. Oder schlimmer noch, ohne dass sich der Benutzer zu interagieren, während Sie die App wärmen.
Wenn Sie eine Webapp ausrollen, und Sie die Bereitstellung testen, bevor Sie Ihre Loadbalancer darauf zeigen, dann haben Sie bereits erwärmt es als Nebenergebnis.
Neben cherouvim Antwort , kann ich glaube, von ein paar andere Fragen, die Warm-up benötigen:
- Objekte Instanziierung (verzögertes Laden, Singletons etc.);
- Heapzuordnung (wenn Ihr
Xms
kleiner als IhreXmx
).
Ich stelle mir vor, dass die OS einstimmt sich auf ein Verhalten der Anwendung als auch, so dass OS Anrufe auch durch eine Aufwärmphase betroffen sein können.
Die meisten der oben (Cache-Population, Objektinitialisierung) sind nicht spezifisch für Java.