Hallo,
ich hoffe mal, das ich hier im richtigen Unterforum gelandet bin
Ich beschreibe mal mein Problem:
Wir haben hier eine gewachsene Java Applikation mit der mitlerweile ca. 100 User arbeiten. Ursprünglich war die Applikation für 30 User geplant. Wohl auch aus diesem Grund wurde während der Planung kein Applikation Server für die Software vorgesehen, sondern eine Architektur gewählt, bei der sich die Clients auf einem zentralen Linux Server anmelden und jeweils eine eigene JVM starten in der die Applikation läuft.
Unser konkretes Problem ist jetzt der RAM Verbrauch. Das RAM ist voll ausgelastet und weil auch das nicht reicht, swappt der Server munter darauf los. (4-6GB im Schnitt)
Da die Clients ab und an sehr große Datenmengen aus einer DB abfragen, ist als maximale Heap Größe 512MB gesetzt. Der Server selbst besitzt 8GB Ram(mehr geht auf der Hardware nicht und neue Hardware scheidet vorerst aus).
Das Design der Applikation ist sicherlich nicht optimal, aber daran werde ich nichts ändern können. Mich beschäftigt im Moment vielmehr die Frage, wie ich den RAM Verbrauch minimieren kann. Die JVM scheint den einmal allokierten Speicher nicht wieder für das OS freizugeben. Gibt es Möglichkeiten dies zu ändern?
Ich kann zwar an diversen Parameter des GC drehen, doch wenn der so "intern" (also in der JVM) freie Speicher nicht wieder von der JVM an das OS freigegeben wird, dann würde das ja vermutlich eh nichts bringen ...
Denn dann fehlt dieser Speicher weiterhin für andere Clients...
Gruß Lyxic
ich hoffe mal, das ich hier im richtigen Unterforum gelandet bin
Ich beschreibe mal mein Problem:
Wir haben hier eine gewachsene Java Applikation mit der mitlerweile ca. 100 User arbeiten. Ursprünglich war die Applikation für 30 User geplant. Wohl auch aus diesem Grund wurde während der Planung kein Applikation Server für die Software vorgesehen, sondern eine Architektur gewählt, bei der sich die Clients auf einem zentralen Linux Server anmelden und jeweils eine eigene JVM starten in der die Applikation läuft.
Unser konkretes Problem ist jetzt der RAM Verbrauch. Das RAM ist voll ausgelastet und weil auch das nicht reicht, swappt der Server munter darauf los. (4-6GB im Schnitt)
Da die Clients ab und an sehr große Datenmengen aus einer DB abfragen, ist als maximale Heap Größe 512MB gesetzt. Der Server selbst besitzt 8GB Ram(mehr geht auf der Hardware nicht und neue Hardware scheidet vorerst aus).
Das Design der Applikation ist sicherlich nicht optimal, aber daran werde ich nichts ändern können. Mich beschäftigt im Moment vielmehr die Frage, wie ich den RAM Verbrauch minimieren kann. Die JVM scheint den einmal allokierten Speicher nicht wieder für das OS freizugeben. Gibt es Möglichkeiten dies zu ändern?
Ich kann zwar an diversen Parameter des GC drehen, doch wenn der so "intern" (also in der JVM) freie Speicher nicht wieder von der JVM an das OS freigegeben wird, dann würde das ja vermutlich eh nichts bringen ...
Denn dann fehlt dieser Speicher weiterhin für andere Clients...
Gruß Lyxic