Ich habe meine Hausaufgaben gemacht und ich konnte keine Antwort für mein Problem finden.
Ich habe einen Server mit 144 GB RAM (147456MB) Ich habe Java JDK 1.6.0_24-b07 Ich habe auch Tomcat 7.0.10.0
Ich möchte so viel Speicher wie möglich zuweisen.
Ich hätte gerne etwas wie Xmx = 130000M (oder sogar Xmx = 135000M). Ich möchte so viel JVM-Speicher wie möglich haben.
Ich kann natürlich nicht über 111000M springen, es heißt Aus Platzmangel
%Vor%Und ich muss wirklich Xms = Xmx haben Ich habe viele Möglichkeiten ausprobiert und konnte nicht springen. Ist es möglich, zusätzlichen Speicher "bit" zu haben?
Grüße Bob
Zunächst benötigt Java ein wenig Speicher, um den Heap zu verwalten. Also, wenn Sie 1 GB Heap zuweisen, wird es 1,5 GB zuweisen (Heap + Permgen + Coderaum + ....). Sie müssen also überprüfen, wie viel Speicher Java tatsächlich vom Betriebssystem zuweist, wenn Sie -Xms111000M -Xmx111000M
sagen. Beachten Sie, dass Sie -Xms
benötigen oder Java wird den Speicher langsam zuweisen und es wird schwierig sein, die OOM-Bedingung zu testen.
Stellen Sie außerdem sicher, dass Sie tatsächlich über so viel Speicher in einem einzelnen Block verfügen. Vielleicht benötigt ein anderer Prozess viel RAM oder Ihr RAM ist in zwei kleinere Teile aufgeteilt (sollte nicht mit einer MMU passieren, da alle Seiten für einen Prozess immer als kontinuierlich erscheinen, aber vielleicht haben Sie einen Fehler gefunden).
Ich weiß, dass 111000M für alle ausreichen sollte ... aber das ist es nicht. Ich habe 144 GB echten Speicher + 200 GB Swap (ich weiß, ich weiß ....)
Das Problem beginnt, wenn ich TOMCAT starte.
Ich benutze LINUX als mein Betriebssystem. In catalina.sh verwende ich diese Optionen
%Vor%Ich brauche wirklich Speicher, und diese "extra" 20GB werden für eine gewisse Zeit einen Unterschied machen (ich weiß, dass ich bald den Speicher aufrüsten muss (192 wegen
)Hardware-Limit und neue Server mit 512GB RAM kaufen, aber es wird in der Zukunft sein. Ich bin noch nicht in der Nähe [noch]]
Ich habe den Heap-Bereich verlassen, aber ich habe mit der Verringerung (von 135000) um 1000 fortgefahren und TOMCAT hat mit der Arbeit begonnen, als ich 111000M erreicht habe.
Ich habe nichts anderes auf diesem Server.
Bei "Leerlauf", wenn TOMCAT gestoppt ist, "nimmt" LINUX 800-900 MB RAM. Ich habe nie mehr als 1GB RAM auf "Leerlauf" erreicht (natürlich sind es ~ 500M nach
Neustart und dann "wachsen" auf ~ 1GB).
SO habe ich 143-GB RAM (sagen wir 140 GB RAM).
Ich würde wirklich gerne 135000M bekommen. Ich weiß, dass es eine Menge Steigerung ist, aber die Anwendung, die auf TOMCAT installiert ist, isst Speicher (wirklich).
Bisher habe ich festgestellt, dass, wenn Xms = Xmx ist, die Leistung die beste ist (und es gibt viele Probleme mit JAVA - aber das ist es, was wir über das
erfahren habenJahre).
Diese Einstellung
%Vor%Arbeiten Sie für uns das Beste. Wir haben viele verschiedene Möglichkeiten (nicht alle um ehrlich zu sein) versucht und diese funktionieren. Aber diese exta 20GB RAM .......
Was ist Ihre volle GC Zeit für einen Prozess mit 110G (Server ist 4x6core (Hyperthreaded CPU) also 24cores, 48threads) dauert ~ 3 Minuten. Im Code haben wir
"erzwingen", um den gesamten GC über Nacht als Teil des Wartungsprozesses auszuführen.
Emil: Danke für den Tipp mit G anstelle von M. Ich werde es versuchen. Und nach diesem Link hast du mir gegeben. Ich bin nie auf die BigApp-Option gestoßen. Ich werde das versuchen.
Bevor ich Tomcat starte, habe ich Speicher verfügbar.
Ich habe sogar neue Neustarts gemacht und starte von 0 (sollte von 0 bis zum Helden aber ..... sein).
Ich habe einige kleinere Server (128 GB RAM und 4x4core CPUs). Ich werde versuchen, dort Änderungen vorzunehmen. Wenn funktioniert das OK, wenn nicht - wird weiter graben
Danke Bob
Tags und Links java