Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core installieren (Übersicht)
Achtung: Störung des Systembetriebs durch falsche Einstellungen. Die hier beschriebenen Vorgehensweisen dürfen nur von versierten Administratoren vorgenommen werden. Im Zweifelsfall unterstützen wir Sie im Rahmen einer Dienstleistung.
Betreiben Sie Solr auf einem System mit folgenden Spezifikationen:
Mit der Zeit wächst Ihr Index durch etwa Metadaten oder Dokumente, wodurch Sie die Speichereinstellung von Solr optimieren müssen.
Dies macht sich etwa bemerkbar, wenn Sie den genutzten Speicherbedarf von Solr überprüfen. Liegt dieser regelmäßig bei 50 % des Speichers, erhöhen Sie die Speichereinstellungen oder überprüfen Sie die GC Duration Time.
Unter Garbage Collection versteht man eine Technik, die zur automatischen Speicherverwaltung innerhalb eines Betriebssystems eingesetzt wird. In Programmierumgebungen, die keine automatische Verwaltung des Speichers bieten, muss ein Softwareentwickler durch manuelle Aufrufe Speicherplatz beim Betriebssystem reservieren und diesen nach Benutzung wieder freigeben. Nur so kann der Speicher für andere Zwecke wieder verwendet werden. Wenn die Programmlogik zur Freigabe des Speichers Fehler enthält, können Speicherlecks entstehen.
Bei der Garbage Collection werden die reservierten Speicherbereiche automatisch daraufhin untersucht, ob sie wieder freigegeben werden können. Die entsprechende Bewertung kann nach verschiedenen Kriterien erfolgen. Auch die Freigabe selbst geschieht automatisch (Quelle: itwissen.info/garbage-collection-GC-Garbage-Collection, 27.05.2020, 15:35 Uhr).
Um den aktuellen Performance-Zustand von Solr zu identifizieren und somit die optimale Parametereinstellung festzulegen, gehen Sie folgendermaßen vor:
<InstallDir>/solr/server/logs
Die GC Duration Time bezieht sich nicht nur auf die Nutzung von Solr, sondern bezieht jeglichen Prozess ein.
Führen Sie etwa einen Importvorgang mit parallel laufenden Threads aus, fällt der Speicherzuwachs pro Zeiteinheit kürzer aus. Dieser Prozess verfälscht den GC-Wert des „realen Betriebs“. Beachten Sie deswegen bei dieser Überprüfung, dass Ihr System keine ungewöhnlichen Aktionen ausführt, da Sie andernfalls einen Sonderfall optimieren.
Wird immer wieder die gleiche Menge an RAM vom GC freigeräumt, zu sehen unter Reclaimed Bytes, ist alles in Ordnung. Sind aber Ausreißer im Bereich Pause GC Duration Time enthalten, ist dies ein Hinweis auf ungenügend verfügbare Ressourcen, etwa folgende:
Werden laufende (in Sekundenabständen) Full GC durchgeführt, ist der SOLR JVM zu wenig RAM zugeteilt. Erhöhen Sie den RAM.
<InstallDir>/solrIm Start-Bereich stehen die Speichereinstellung:
bin\solr.cmd start -cloud -p 8981 -z localhost:9981/solr -s "%CD%/nodes/node/solr" -m 16g -a "-Djetty.host=127.0.0.1 -Djute.maxbuffer=104857600"
16g steht für 16 Gigabyte. Teilen Sie hier nicht mehr zu, als für das Betriebssystem zur Verfügung steht. Es sollte auch noch eine größere Menge Speicher dem Betriebssystem zur Verfügung stehen, sodass Lese-Caches des Betriebssystems effektiv verwendet werden können.Im Standard wird der benötigte Speicher dynamisch alloziert. Die Performance lässt sich steigern, wenn Sie der Java-Maschine mitteilen, dass der zugeteilte Speicher gleich von vorneherein reserviert werden soll. Zudem können Sie leicht erkennen, ob das Betriebssystem mit allen laufenden Prozessen auf genügend RAM-Ressourcen zugreifen kann.
<installDir>/bin/
set GC_TUNE=-XX:NewRatio=3 ^
-XX:SurvivorRatio=4 ^
-XX:TargetSurvivorRatio=90 ^
-XX:MaxTenuringThreshold=8 ^
-XX:+UseConcMarkSweepGC ^
-XX:+UseParNewGC ^
-XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 ^
-XX:+CMSScavengeBeforeRemark ^
-XX:PretenureSizeThreshold=64m ^
-XX:+UseCMSInitiatingOccupancyOnly ^
-XX:CMSInitiatingOccupancyFraction=50 ^
-XX:CMSMaxAbortablePrecleanTime=6000 ^
-XX:+CMSParallelRemarkEnabled ^
-XX:+ParallelRefProcEnabled
set GC_TUNE=%GC_TUNE% -XX:+AlwaysPreTouch
GC_TUNE="-XX:NewRatio=3 \
-XX:SurvivorRatio=4 \
-XX:TargetSurvivorRatio=90 \
-XX:MaxTenuringThreshold=8 \
-XX:+UseConcMarkSweepGC \
-XX:+UseParNewGC \
-XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 \
-XX:+CMSScavengeBeforeRemark \
-XX:PretenureSizeThreshold=64m \
-XX:+UseCMSInitiatingOccupancyOnly \
-XX:CMSInitiatingOccupancyFraction=50 \
-XX:CMSMaxAbortablePrecleanTime=6000 \
-XX:+CMSParallelRemarkEnabled \
-XX:+ParallelRefProcEnabled"
GC_TUNE="$GC_TUNE -XX:+AlwaysPreTouch"
Als Standard Garbage Collector wird CMS eingesetzt. Sie können allerdings auch den „neuen“ G1GC verwenden. Langzeittests haben gezeigt, dass der G1GC zwar insgesamt geringfügig langsamer, aber stabiler in der Lauffähigkeit ist, also bei hoher Belastung weniger lange GC-Pausen entstehen. Gerade bei hohem Speicherbedarf arbeitet G1GC besser.
So aktivieren Sie G1GC:
<installDir>/solr/
set GC_TUNE=-XX:NewRatio=3 ^
-XX:SurvivorRatio=4 ^
-XX:TargetSurvivorRatio=90 ^
-XX:MaxTenuringThreshold=8 ^
-XX:+UseConcMarkSweepGC ^
-XX:+UseParNewGC ^
-XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 ^
-XX:+CMSScavengeBeforeRemark ^
-XX:PretenureSizeThreshold=64m ^
-XX:+UseCMSInitiatingOccupancyOnly ^
-XX:CMSInitiatingOccupancyFraction=50 ^
-XX:CMSMaxAbortablePrecleanTime=6000 ^
-XX:+CMSParallelRemarkEnabled ^
-XX:+ParallelRefProcEnabled
set GC_TUNE=-XX:+UseG1GC ^
-XX:+PerfDisableSharedMem ^
-XX:+ParallelRefProcEnabled ^
-XX:G1HeapRegionSize=4m ^
-XX:MaxGCPauseMillis=250 ^
-XX:InitiatingHeapOccupancyPercent=75 ^
-XX:+AggressiveOpts
GC_TUNE="-XX:NewRatio=3 \
-XX:SurvivorRatio=4 \
-XX:TargetSurvivorRatio=90 \
-XX:MaxTenuringThreshold=8 \
-XX:+UseConcMarkSweepGC \
-XX:+UseParNewGC \
-XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 \
-XX:+CMSScavengeBeforeRemark \
-XX:PretenureSizeThreshold=64m \
-XX:+UseCMSInitiatingOccupancyOnly \
-XX:CMSInitiatingOccupancyFraction=50 \
-XX:CMSMaxAbortablePrecleanTime=6000 \
-XX:+CMSParallelRemarkEnabled \
-XX:+ParallelRefProcEnabled"
GC_TUNE="-XX:+UseG1GC
-XX:+PerfDisableSharedMem
-XX:+ParallelRefProcEnabled
-XX:G1HeapRegionSize=4m
-XX:MaxGCPauseMillis=250
-XX:InitiatingHeapOccupancyPercent=75
-XX:+AggressiveOpts"