OutOfMemory-Fehler in HCL Connections: JVM Arbeitsspeicher in WebSphere erhöhen

Bei einer HCL Connections 6.5.1 Installation kam es zu Problemen mit den Dateien (Files-Anwendung). In den Logs des jeweiligen Clusters war folgender Fehler zu finden:

[3/19/21 10:25:52:926 CET] 00000107 AbstractPolli E com.netflix.config.AbstractPollingScheduler$1 run Error getting result from polling source
       java.lang.OutOfMemoryError: Java heap space

Die weitere Analyse zeigte, dass kürzlich ein Benutzer ein 2GB großes Video hochgeladen hat. Scheinbar puffert Connections dies nicht sauber, denn beim Abspielen erhöht sich die Auslastung des Arbeitsspeichers deutlich. Erst wenn man die Wiedergabe stoppt, wird er wieder freigegeben:

Wie man sieht, befindet sich der genutzte Speicher während der Wiedergabe recht nah am Limit der HeapSize. An Punkt (1) im Diagram wurde die Wiedergabe gestoppt. Der freie Arbeitsspeicher (violett) nimmt hier deutlich zu, während der belegte (grün) sinkt. Da während der Wiedergabe nicht mehr viel freier Speicher zur Verfügung steht, kommt es somit zu Problemen, wenn weitere Benutzer die große Videodatei abspielen möchten. Den Zugriffslogs vom Webserver nach ist genau das passiert: Zwei Benutzer haben die Datei kurz nacheinander geöffnet. Aus diesem Grunde kam es zu OutOfMemory-Fehlern im Log, wodurch das Dateien-Modul nicht mehr richtig funktionierte.

Arbeitsspeicher im AppServer erhöhen

Da jeder App-Server eine eigene JVM startet, muss der Speicher dort erhöht werden. Standardmäßig läuft die Files-Anwendung im AppsCluster. Sofern man dies nicht manuell geändert hat, öffnen wir diesen in der ISC unter Servers > WebSphere application servers > AppsCluster_server1. In der Navigation rechts die Gruppe Java and Process Management ausklappen und auf Process definition klicken.

Nun rechts unter Additional Properties auf Java Virtual Machine. Im unteren Bereich existieren zwei Einträge für den minimalen und den maximalen Arbeitsspeicher, den die JVM anfordern darf. Sofern der Arbeitsspeicher nicht knapp ist, empfiehlt es sich, beide Werte gleich zu setzen. Das dynamische assoziieren versucht ansonsten etwas Overhead. Auf dem Server waren Minimum auf 512 MB und Maximum auf 2560 MB gesetzt:

Dies kann entsprechend der Größe erhöht werden. Ich setze beides auf 6144 MB (6GB). Nach einem Klick auf Ok und Save ist ein Neustart erforderlich, damit die neuen Limits greifen.

Leave a Reply