La taille du cache CacheEntryCollector est trop petite

Problème

Si vous avez fait un usage étendu d’autorisations / ACL dans CQ ou CRX, cela peut affecter les performances de recherche CRX car les résultats de recherche sont extraits en fonction des autorisations du référentiel CRX.

Dans les cas où il s’agit d’un problème, si vous prenez des mémoires de thread, vous constaterez qu’il y a beaucoup de litiges de verrouillage liés aux traces de pile contenant la classe CacheEntryCollector.

Pour voir si vous disposez d’autorisations suffisantes (rep:nœuds ACE) dans votre référentiel pour affecter considérablement les performances, procédez comme suit :

  1. Accédez à l’application Web CRX /crxde et connectez-vous en tant qu’administrateur.
  2. Cliquez sur Outils => Requête.
  3. Sélectionnez « XPath » comme Type.
  4. Dans la boîte de dialogue Requête entrez la requête suivante :
    //element(*,rep:ACL) order by @jcr:score
  5. Cliquez sur Exécuter.

Si cela se traduit par plus de 5 000 nœuds, consultez les explications ci-dessous pour plus d'informations sur la manière d'améliorer les performances du système.

Résolution

1. Tout d'abord, cherchez si vous pouvez réduire votre nombre total de listes ACL.  Voici quelques conseils qui peuvent vous aider :

  • Il est logique de revoir les listes ACL définies et de voir si certaines d’entre elles sont indésirables ou inutiles.  Il est souvent possible de réduire le nombre de listes ACL en ajoutant un groupe contenant des autorisations partagées, puis en affectant d’autres groupes en tant que membres.
  • Si vous définissez les autorisations / listes ACE directement par rapport aux utilisateurs, vous pouvez réduire considérablement le nombre de listes ACE utilisées par la suppression de ces autorisations.  Vous devez ensuite les remplacer par des autorisations définies sur des groupes partagés.

Remarque : si vous ne savez pas comment visualiser les listes ACL dans CRX, consultez cet article.  Vous pouvez également rechercher des listes ACL en utilisant la recherche mentionnée plus haut //element(*,rep:ACL) order by @jcr:score.

2. Une fois que vous réduisez le nombre total de listes ACE, si vous avez toujours des problème de performance, voyez alors si vous pouvez implémenter un calque de cache dans votre code d’application pour les résultats de recherche fréquemment recherchés.

3. Finalement augmenter la taille de la mémoire cache ACL.

  1. Installez le dernier CRX hotfixpack 2.2.0.56 ou version ultérieure (vérifier le partage de package si disponible publiquement sinon le demander par ticket dans Daycare).
  2. Ajoutez le paramètre JVM suivant pour modifier la taille de la mémoire cache :
    -Dorg.apache.jackrabbit.core.security.authorization.acl.CachingEntryCollector.maxsize=10 000

    à 10 000 par exemple si votre nombre actuel de rep:nœud ACE était un peu moins de 10 000.


S’applique à

CRX 2.2

 Adobe

Recevez de l’aide plus rapidement et plus facilement

Nouvel utilisateur ?