Wie viel Speicher muss dem Betriebssystem bei einer Java-Serveranwendung überlassen werden?

Wie viel Speicher muss dem Betriebssystem bei einer Java-Serveranwendung überlassen werden?

Angenommen, ich führe Tomcat mit -Xms256m -Xmx1024m aus, möchte aber meine Heap-Nutzung erhöhen.

Was ist die größte sichere Heap-Größe, die ich zuweisen kann?

Für diese Frage gehen Sie bitte davon aus, dass das System 5 GB RAM hat und ein z/Linux-System ist. Wenn möglich hätte ich jedoch gerne eine allgemeinere Faustregel als Antwort.

Und wenn es sich um ein Duplikat handelt, tut es mir leid. Ich war überrascht, dass ich zu diesem Thema keine weiteren Informationen gefunden habe.

Kein Duplikat von:Ich schaute aufHier, seine Antwort scheint jedoch nur eine Vermutung ohne Beleg zu sein. Die anderen Antworten auf diese Frage sind nicht sehr klar und/oder spezifisch auf mein Problem zugeschnitten. 1) Ich verwende kein 32-Bit-Windows-System, 2) Ich habe nicht nach PermGen gefragt, obwohl es in einer guten Antwort erwähnt werden könnte, 3) Die dritte Antwort lautete zwar „Schließlich müssen Sie auch die anderen Dinge berücksichtigen, die auf dem Server laufen und ebenfalls RAM benötigen“, aber das ist keine präzise Antwort. Ich mache mir im Moment nur Sorgen über die Speichernutzung des Betriebssystems.

Bearbeiten: Dies ist ein dediziertes System, daher mache ich mir hauptsächlich Sorgen um die Speichernutzung des Betriebssystems. Um andere Programme mache ich mir keine Sorgen.

GC

Antwort1

Die maximale Heap-Größe, die Sie zuweisen möchten, hängt von der Nutzung der eigenen Ressourcen Ihres Systems, anderer ausgeführter Dienste usw. ab. Sie möchten eine Heap-Größe zuweisen, die dem Betriebssystem genügend Speicher zur Verfügung lässt, um unnötiges Speicher-Paging zu vermeiden. Dies ist eher ein Problem unter Windows, aber das Problem tritt auch unter Linux auf (ich bin eher ein Windows- als ein Linux-Experte, also entschuldigen Sie das).

Zunächst möchten Sie die Ressourcenauslastung Ihres Systems überprüfen:http://www.cyberciti.biz/faq/linux-check-memory-usage/

Als Nächstes möchten Sie sehen, wie Ihre Auslagerungsdatei konfiguriert ist:http://www.cyberciti.biz/faq/linux-check-the-size-of-pagesize/

Anschließend müssen Sie auf Grundlage der zuvor gesammelten Informationen unterschiedliche Konfigurationen ausprobieren und die Auslastung Ihrer Auslagerungsdatei im Auge behalten:http://www.cyberciti.biz/faq/linux-check-swap-usage-command/

Wenn Ihre Auslagerungsdatei stark beansprucht wird, ist Ihre Heap-Größe zu groß. Wenn sie nur sehr wenig oder gar nicht beansprucht wird, können Sie versuchen, die Heap-Größe zu erhöhen, um die Leistung zu verbessern (die tatsächlichen Leistungsergebnisse variieren zwischen verschiedenen Java-Apps, und eine Erhöhung der Heap-Größe kann aufgrund der Art und Weise, wie sie programmiert sind, die Leistung einiger Apps verschlechtern).

Sie möchten sicherstellen, dass Sie die entsprechende Speichermenge zuweisen, damit Ihr Betriebssystem über genügend freien RAM verfügt, um die Auslagerungsdatei problemlos zu verwalten, und Ihrer Anwendung ausreichend Speicher zugewiesen ist. Unter Windows versuche ich, unter Last mindestens 25 % freien RAM beizubehalten. Ich würde verschiedene Konfigurationen ausprobieren und die Leistung Ihres Systems beobachten.

NOCH EIN WICHTIGER HINWEIS: In Java 8 müssen Sie diese Elemente überhaupt nicht definieren, Java 8 scheint diese Werte besser selbst verwalten zu können, als sie statisch zuzuweisen.

verwandte Informationen