Das Parsen großer, defekter oder bösartiger Eingaben führt zu übermäßigem Speicher- oder CPU-Verbrauch während der Indizierung.
Im schlimmsten Fall kommt es zu JVM-Abstürzen.
Verwenden Sie Tika-Parser in separaten JVM-Prozessen.
Um sich besser vor solchen Fällen zu schützen und die Handhabbarkeit des Ressourcenverbrauchs durch Tika zu verbessern, führen Sie Tika-Parser in separaten JVM-Prozessen aus. Zur Umsetzung siehe https://issues.apache.org/jira/browse/TIKA-416
Diese Funktion ermöglicht die Volltextindizierung von binären Dokumenten in separaten JVM-Prozessen. Auf diese Weise haben Probleme, die durch das Parsen großer oder fehlerhafter Dokumente verursacht werden, keinen Einfluss auf den Hauptprozess von CRX oder CQ. Diese Funktion erhöht die allgemeine Zuverlässigkeit und Stabilität des Systems, da Indizierungsprobleme besser isoliert werden.
Die Funktion startet automatisch einen Pool von Hintergrundprozessen für die Volltext-Extraktion.
Starten Sie diese Prozesse mit dem Java-Befehl, der als forkJavaCommand-Parameter des Abschnitts <SearchIndex/> in den entsprechenden Workspace- oder Repository-Konfigurationsdateien angegeben ist (normalerweise crx-quickstart/repository/workspaces/crx.default/workspace.xml).
Setzen Sie diesen Wert beispielsweise auf „java -Xmx512m“, um diese Funktion zu aktivieren.
Zusätzlicher Tipp
Die gegabelten Textextraktionsprozesse können dem übergeordneten Prozess nicht direkt schaden. Sie können jedoch viel CPU-Zeit beanspruchen, insbesondere bei der Verarbeitung von vielen großen PDF-Dokumenten. Um die Auswirkung auf die Gesamtsystemleistung zu verhindern oder zu kontrollieren, setzen Sie die Option „forkJavaCommand“ mit „nice“ oder einem anderen plattformspezifischen Befehl zur Reduzierung der Ausführungspriorität der gegabelten Extraktionsprozesse voraus. Die empfohlenen Werte für Linux und Windows sind:
Linux: nice java -Xmx512m
Windows: cmd /c start /low /wait /b java -Xmx512m
Windows:
<SearchIndex class="com.day.crx.query.lucene.LuceneHandler">
<param name="path" value="${wsp.home}/index"/>
<param name="resultFetchSize" value="100"/>
<param name="cacheSize" value="100000" />
<param name="forkJavaCommand" value="cmd /c start /low /wait /b java -Xmx512m"/>
</SearchIndex>
<SearchIndex class="com.day.crx.query.lucene.LuceneHandler">
<param name="path" value="${wsp.home}/index"/>
<param name="resultFetchSize" value="100"/>
<param name="cacheSize" value="100000" />
<param name="forkJavaCommand" value="nice java -Xmx512m"/>
</SearchIndex>
Bei Linux funktionieren die Befehle nice und java nur, wenn sie in der Variable Path der Shell-Sitzung des CQ-Benutzers zugänglich sind.
Unter Windows gilt das Gleiche für den Befehl java, die Variable PATH muss den Ordner bin der richtigen Java-Version enthalten.
Siehe hier für Details, wie man die Variable „Path“ für Java setzt.
Weitere Informationen
Standardmäßig laufen Tika-Parser, die sich um diese Extraktion kümmern, im gleichen Java-Prozess wie CQ, was bei bestimmten Anwendungsfällen zu den beschriebenen Symptomen führen kann.
Bei Ihrem Konto anmelden