Problem
Wenn Sie in CQ oder CRX ausgiebig Berechtigungen/ACLs verwendet haben, kann dies die CRX-Suchleistung beeinträchtigen, da Suchergebnissen unter Berücksichtigung der Berechtigungen im CRX-Repository gefiltert werden müssen, wenn sie abgerufen werden.
Wenn dies ein Problem darstellt, können Sie anhand von Thread-Dumps feststellen, dass es viele Sperrkonflikte in Bezug auf Stacktraces gibt, die die Klasse CacheEntryCollector enthalten.
Um herauszufinden, ob Sie über ausreichende Berechtigungen (rep:ACE-Knoten) in Ihrem Repository verfügen, die die Leistung deutlich beeinträchtigen, gehen Sie wie folgt vor:
- Gehen Sie zur CRX-Webanwendung /crxde und melden Sie sich als Administrator an.
- Klicken Sie auf „Werkzeuge“ => „Abfrage“.
- Wählen Sie „XPath“ als Typ
- Geben Sie im Feld Abfrage die folgende Abfrage ein:
//element(*,rep:ACL) geordnet nach @jcr:score - Klicken Sie auf Ausführen
Wenn daraus mehr als 5000 Knoten resultieren, lesen Sie die nachstehenden Informationen zur Verbesserung der Systemleistung.
Lösung
1. Prüfen Sie zunächst, ob Sie Ihre Gesamtzahl der ACLs verringern können. Die folgenden Tipps können hilfreich sein:
- Es ist sinnvoll, Ihre definierten ACLs zu überprüfen und festzustellen, ob sie überflüssig oder unnötig sind. Oftmals kann die Anzahl der ACLs verringert werden, indem man eine Gruppe hinzufügt, die gemeinsame Berechtigungen enthält und dann andere Gruppen als Mitglieder zuweist.
- Wenn Sie Berechtigungen/ACEs direkt gegen Benutzer definieren, können Sie die Anzahl der verwendeten ACEs stark verringern, indem Sie solche Berechtigungen entfernen. Dann sollten Sie sie durch Berechtigungen ersetzen, die stattdessen gegen freigegebene Gruppen gesetzt werden.
Hinweis: Wenn Sie nicht wissen, wie ACLs in CRX angezeigt werden, lesen Sie diesen Artikel. Sie können auch nach ACLs suchen, indem Sie die oben genannte Suche verwenden //element(*,rep:ACL) geordnet nach @jcr:score.
2. Sobald Sie die Gesamtzahl der ACEs verringert haben, sollten Sie, wenn Sie immer noch ein Leistungsproblem haben, feststellen, ob Sie eine Caching-Schicht in Ihrem Anwendungscode für häufig abgerufene Suchergebnisse implementieren können.
3. Zuletzt wird die Größe des ACL-Cache erhöht.
- Installieren Sie das aktuelle CRX-Hotfixpack 2.2.0.56 oder höher (prüfen Sie, ob die Paketfreigabe öffentlich verfügbar ist, andernfalls fordern Sie sie per Ticket im Daycare-Support an).
- Fügen Sie den folgenden JVM-Parameter hinzu, um die Cachegröße zu ändern:
-Dorg.apache.jackrabbit.core.security.authorization.acl.CachingEntryCollector.maxsize=10000
10000 zum Beispiel, wenn Ihre aktuelle Anzahl von rep:ACE-Knoten etwas unter 10000 lag.
Gilt für
CRX 2.2