Wie kann man den Speicher eines Services/Kerndienste erhöhen?

Wie kann man den Speicher eines Services/Kerndienste erhöhen?

Bei der Verarbeitung kann es vorkommen, dass der Standard-Speicher des Services nicht ausreicht, um die Daten zu bearbeiten. Folgen können Abstürze sein, z. Bsp. mit Java-HeapSpace. Daher kann es nötig sein, den Standardwert zu erhöhen. Bitte nachfolgende Anleitung durchgehen. Die Anpassung muss direkt an dem Server erfolgen, bei dem der betroffene Dienst läuft. 

Einzige Ausnahme ist der Servicemanager. Hier muss in der Konfigurationsdatei servicewatcher-sw.yml beim jeweiligen Service der Wert angepasst werden. Im Servicemanager selbst werden nur die Start-Werte definiert. Aus der servicewatcher-sw.yml wird dann der Maximal-Wert ermittelt. Im Speicher sieht das dann so aus (je bei Java.exe): 

typische Meldungen bei Speichermangel: "could not reserve enough space", "out of memory" ... 

 

nachfolgend beschrieben:


Schritt-für-Schritt-Anleitung

alles außer ElasticSearch und Servicemanager:

  1. In das BIN-Verzeichnis des Services gehen und die Datei <dienstname>w.exe starten. Beispiel: enaio_blueline_documentviewerw.exe. Es empfiehlt sich die W-EXE als Admin zu starten. 

  2. Auf den Tab Java gehen und dort die Anzahl erhöhen - Maximum Memory Pool.

  3. Bitte die Optionen auch prüfen. Wenn hier ein Parameter "-Xm" vorhanden ist, dann auch diesen Wert erhöhen. Wichtig: Es sollte immer ein kB-Wert verwendet werden, also 1024, 2048 ... "Krumme" Zahlen führen meist dazu, dass der Dienst nicht mehr startet.
    Beispiel für Documentviewer auf 2 GB erhöhen: 

  4. Dienst beenden.

  5. Logs aus dem Log-Verzeichnis entfernen.

  6. Dienst starten.

  7. Logs prüfen: Startet der Dienst nicht, dann in die Logs schauen, was es ist. 

ElasticSearch: 

  1. In der Dienstverwaltung den Dienstnamen ermitteln: 

  2. auf commandline  gehen, bitte explizit "als Administrator ausführen", sonst klappt das Speichern nicht.

  3. In das BIN-Verzeichnis des Services gehen und die MGR-EXE aufrufen mit Parameter manage und Dienstname: 

    E: CD \enaio\services\elasticsearch\bin elasticsearch-service-mgr.exe manage <dienstname>

     

    Alternative: 
    Die Datei elasticsearch-service-mgr.exe kopieren und umbenennen in Dienstname+W.exe. 
    Beispiel: 

  4. Auf den Tab Java gehen und dort die Anzahl erhöhen, Die Angabe ist in MB.
    Wichtig: Es sollte immer ein kB-Wert verwendet werden, also 1024, 2048 ... "Krumme" Zahlen führen meist dazu, dass der Dienst nicht mehr startet.
    Beispiel für ElasticSearch auf 2 GB erhöhen: 

    image-20250725-133826.png

     

    Bitte die Java-Optionen auch prüfen. Wenn hier ein Parameter "-Xm" vorhanden ist oder “-Xs”, dann auch diese Werte erhöhen. Hier kann auch GB eingetragen werden, z. Bsp. 2G oder 2024M. Bis ElasticSearch 6.x musste man diese Parameter definieren. Aktuell wird dort nur noch der Wert eingetragen, um den erhöht wird (= “-XX“). Standardwert 1GB, siehe Screenshot.

  5. Dienst beenden.

  6. Logs aus dem Log-Verzeichnis entfernen.

  7. Dienst starten.

  8. Logs prüfen: Startet der Dienst nicht, dann in die Logs schauen, was es ist. 

Bitte beachten, dass dieser Wert der Java-Speicher ist, nicht der Speicher des Dienstes. ElasticSearch wird sich immer die Hälfte des RAM nehmen (kann aber max. 30 GB verwalten). Sein Java kann aber nur bis zur definierten Grenze arbeiten. 

Servicemanager: 

  1. Die servicewatcher-sw.config aus dem config-Verzeichnis öffnen und den jeweiligen Dienst heraussuchen. 

  2. Wichtig: Wenn ein Wert von 2 GB oder größer eingestellt werden soll, dann muss der Dienst zusätzlich auf 64bit gestellt werden (sofern noch nicht geschehen). Dazu einfach den Parameter "arch: x64" ergänzen. Auf korrekte Anzahl an Leerzeichen achten!
    Beispiel: Extractionservice soll auf 4 GB gestellt werden und 64bit

  3. Falls möglich: 

    1. Dienst beenden.

    2. Logs aus dem Log-Verzeichnis entfernen.

    3. Dienst starten.

    4. Logs prüfen, ob auch alle Services wieder starten. 

  4. Sollte ein kompletter Dienststart nicht gewünscht oder möglich sein, kann man wie folgt vorgehen: 

    1. Neuladen des Services
      Dazu die Servicemanager-Admin-Seite aufrufen und dort Neuladen des Services. 

    2. oder Neuladen der config (das ist abhängig vom Service und hilft u.U. nur bei bestimmten Aktionen, z. Bsp. Service hinzufügen oder entladen), siehe auch:
      https://enaiodevelop.atlassian.net/wiki/spaces/PS/pages/21424538
      Kurzfassung:

      1. Servicemanager-Admin-Seite aufrufen und dort zur Swagger-UI-Seite des Argus gehen:
        http://127.0.0.1:7281/swagger-ui.html 

      2. dort aufklappen: generic-postable-mvc-endpoint und "POST /manage/refresh"

      3. Den Button "try it out" drücken. Damit wird die Servicewatcher-sw.yml noch einmal neu geladen. 

      4. Auf der gleiche Seite sollte dann als Ergebnis "200" stehen und die angepasste Option bzw. mindestens im Log. 

      5. Log prüfen, ob es auch geklappt hat. Log-Beispiel für Abschalten Mailstorage-Instanz:

 

 

Verwandte Artikel