La dimensione della cache CacheEntryCollector è troppo piccola

Problema

Se hai fatto un uso estensivo dei permessi / ACL in CQ o CRX, questo può influenzare le prestazioni di ricerca CRX perché quando i risultati della ricerca vengono recuperati devono essere filtrati rispetto ai permessi nel repository CRX.

Nei casi in cui questo è un problema, se si considerano i thread dump si vedrà che è presente un ingente lock contention relativo alle tracce di stack contenenti la classe CacheEntryCollector.

Per vedere se hai abbastanza permessi (nodi rep:ACE) impostati nel tuo repository per influenzare notevolmente le prestazioni, fai quanto segue:

  1. Vai alla Web app CRX /crxde e accedi come amministratore
  2. Fai clic su Strumenti => Query
  3. Seleziona "XPath" come Tipo
  4. Nella casella Query inserisci la seguente domanda: 
    //element(*,rep:ACL) order by @jcr:score
  5. Fai clic su Esegui

Se il risultato sono più di 5000 nodi, vedi sotto per i dettagli su come migliorare le prestazioni del sistema.

Risoluzione

1. Prima di tutto, ricerca se puoi o meno ridurre il numero totale di ACL.  Qui ci sono alcuni suggerimenti che possono essere utili:

  • Ha senso rivedere le ACL definite e vedere se alcune di esse sono superflue o inutili.  Molte volte è possibile ridurre il numero di ACL aggiungendo un gruppo che contiene permessi condivisi e assegnando altri gruppi come membri dello stesso.
  • Se stai definendo i permessi / ACE direttamente contro gli utenti, puoi ridurre notevolmente il numero di ACE utilizzati rimuovendo tali permessi.  Poi dovresti sostituirli con permessi che sono impostati contro i gruppi condivisi.

Nota: Se non sai come visualizzare le ACL in CRX allora vedi questo articolo.  Puoi anche cercare gli ACL usando la ricerca di cui sopra //element(*,rep:ACL) order by @jcr:score.

2. Una volta ridotto il numero totale di ACE, se si verificano ancora problemi di prestazioni, guarda se è possibile implementare un livello di cache nel codice dell'applicazione per i risultati di ricerca più comuni.

3. Infine, per aumentare la dimensione della cache ACL.

  1. Installa l'ultimo CRX hotfixpack 2.2.0.56 o superiore (controlla la condivisione del pacchetto, se disponibile in pubblico, altrimenti richiedilo tramite ticket in Daycare)
  2. Aggiungi il seguente parametro JVM per cambiare la dimensione della cache:
    -Dorg.apache.jackrabbit.core.security.authorization.acl.CachingEntryCollector.maxsize=10000

    10000 per esempio se il numero attuale del nodo rep:ACE è inferiore a 10000.


Si applica a

CRX 2.2

 Adobe

Ottieni supporto in modo più facile e veloce

Nuovo utente?