Aufwärmen von Java-Anwendungen mit hohem Durchsatz

7

Ich habe kürzlich über Szenarien erfahren, die das Aufwärmen einer App erfordern (mit hohem Durchsatz), bevor sie damit beginnen, echte Anfragen zu bedienen. Die Logik dahinter war es, JIT zu erlauben, seine Leistungszauberei zu machen!

Ist das eine Norm für Java-Apps oder wird dies in der Regel für speicherintensive (Footprint-) Apps gemacht?

    
Aayush Puri 11.02.2010, 19:26
quelle

3 Antworten

11

Wenn Sie von einer Webapplikation / Website mit hohem Traffic sprechen, ist JIT ein sehr kleines Problem. Das größte Problem ist das Aufwärmen (Auffüllen) aller Cache-Ebenen, die Sie benötigen. ZB ehcache-Regionen, die vom Hibernate . Das liegt daran, dass E / A-bezogene Operationen um Größenordnungen langsamer sind als alles, was in der CPU passiert (das heißt, es sei denn, Sie berechnen Fraktale:)

    
cherouvim 11.02.2010, 19:30
quelle
5

Die Frage ist, wann möchten Sie aus diesem Weg gehen dies tun?

Wenn Sie eine Webanwendung bereitstellen, und diese SOFORT live ist, fügen Sie, während Sie sie "aufwärmen", zusätzliche Last hinzu, was kontraproduktiv ist. Ähnliches gilt, wenn eine Desktop-App gestartet wird. Kein Punkt beim Aufwärmen, wenn der Benutzer sofort damit beginnt. Oder schlimmer noch, es dem Benutzer nicht zu erlauben, während des Aufwärmens der App zu interagieren.

Wenn Sie eine Webanwendung bereitstellen und die Bereitstellung testen, bevor Sie Ihre Load Balancer darauf ausgerichtet haben, haben Sie diese bereits als Nebeneffekt aufgewärmt.

    
z5h 11.02.2010 19:35
quelle
4

Zusätzlich zu cherouvims Antwort kann ich nachdenken von einigen anderen Problemen, die Aufwärmen erfordern:

  • Objekte Instanziierung (Lazy Loading, Singletons etc.);
  • Heap allocation (wenn Ihr Xms kleiner ist als Ihr Xmx ).

Ich stelle mir vor, dass sich das Betriebssystem auch auf das Verhalten einer Anwendung einstellt, so dass OS-Aufrufe auch von einer Aufwärmphase betroffen sein können.

Die meisten der oben genannten Punkte (Cache-Population, Objektinitialisierung) sind nicht spezifisch für Java.

    
Eli Acherkan 11.02.2010 19:38
quelle

Tags und Links