Trop de flux de travail dans la boîte de réception bloque l'AEM dus aux appels pulse.data.json

Problème

L'instance de l'auteur AEM est lente et plante en raison de l'empilement des flux de travail ayant échoué et des appels de la boîte de réception du flux de travail pulse.data.json. Le badge de la boîte de réception du flux de travail est l'icône en forme de cloche dans le coin supérieur droit du Touch UI.

Dans access.log, il est observé que de nombreux appels à pulse.data.json proviennent des mêmes utilisateurs. 

10.43.34.55 - user 06/Jan/2017:18:17:11 +0900 "GET /mnt/overlay/granite/ui/content/shell/header/actions/pulse.data.json?_=1483664547926 HTTP/1.1" 500 1234 "https://authorhost/sites.html/content/geometrixx/en" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
10.43.34.55 - user 06/Jan/2017:18:17:13 +0900 "GET /mnt/overlay/granite/ui/content/shell/header/actions/pulse.data.json?_=1483664547927 HTTP/1.1" 500 1234 "https://authorhost/sites.html/content/geometrixx/en" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
10.43.34.55 - user 06/Jan/2017:18:17:15 +0900 "GET /mnt/overlay/granite/ui/content/shell/header/actions/pulse.data.json?_=1483664547928 HTTP/1.1" 500 1234 "https://authorhost/sites.html/content/geometrixx/en" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
10.43.34.55 - user 06/Jan/2017:18:17:17 +0900 "GET /mnt/overlay/granite/ui/content/shell/header/actions/pulse.data.json?_=1483664547929 HTTP/1.1" 500 1234 "https://authorhost/sites.html/content/geometrixx/en" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"

De plus, le serveur AEM montre une utilisation élevée du processeur et des vidages de fils capturés à partir de fils AEM comme celui ci-dessous :

"192.168.10.5 [1485896535734] GET /mnt/overlay/granite/ui/content/shell/header/actions/pulse.data.json HTTP/1.1" #1969 prio=5 os_prio=0 tid=0x0000000001a39800 nid=0xaf2 runnable [0x00007f2f5ae4f000]
   java.lang.Thread.State: RUNNABLE
 at org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.getChildNodeNames(ReadOnlyBuilder.java:101)
 at org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.getChildNames(AbstractTree.java:145)
 at org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.getChildren(AbstractTree.java:322)
 at org.apache.jackrabbit.oak.security.authorization.permission.PermissionStoreImpl.loadPermissionEntries(PermissionStoreImpl.java:150)
 at org.apache.jackrabbit.oak.security.authorization.permission.PermissionStoreImpl.load(PermissionStoreImpl.java:115)
 at org.apache.jackrabbit.oak.security.authorization.permission.PermissionEntryCache.getEntries(PermissionEntryCache.java:48)
 at org.apache.jackrabbit.oak.security.authorization.permission.PermissionEntryCache.load(PermissionEntryCache.java:63)
 at org.apache.jackrabbit.oak.security.authorization.permission.PermissionEntryProviderImpl.init(PermissionEntryProviderImpl.java:109)
 at org.apache.jackrabbit.oak.security.authorization.permission.PermissionEntryProviderImpl.<init>(PermissionEntryProviderImpl.java:72)
 at org.apache.jackrabbit.oak.security.authorization.permission.CompiledPermissionImpl.<init>(CompiledPermissionImpl.java:112)
 at org.apache.jackrabbit.oak.security.authorization.permission.CompiledPermissionImpl.create(CompiledPermissionImpl.java:126)
 at org.apache.jackrabbit.oak.security.authorization.permission.PermissionProviderImpl.<init>(PermissionProviderImpl.java:71)
 at org.apache.jackrabbit.oak.security.authorization.AuthorizationConfigurationImpl.getPermissionProvider(AuthorizationConfigurationImpl.java:185)
 at org.apache.jackrabbit.oak.security.authorization.composite.CompositeAuthorizationConfiguration.getPermissionProvider(CompositeAuthorizationConfiguration.java:134)
 at org.apache.jackrabbit.oak.core.MutableRoot$1.createValue(MutableRoot.java:126)
 at org.apache.jackrabbit.oak.core.MutableRoot$1.createValue(MutableRoot.java:123)
 at org.apache.jackrabbit.oak.core.LazyValue.get(LazyValue.java:53)
 - locked <0x0000000726732148> (a org.apache.jackrabbit.oak.core.MutableRoot$1)
 at org.apache.jackrabbit.oak.core.MutableRoot$2.getExecutionContext(MutableRoot.java:311)
 at org.apache.jackrabbit.oak.query.QueryEngineImpl.executeQuery(QueryEngineImpl.java:256)
 at org.apache.jackrabbit.oak.query.QueryEngineImpl.executeQuery(QueryEngineImpl.java:233)
 at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:314)
 at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:308)
 at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:304)
 at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.getTree(IdentifierManager.java:133)
 at org.apache.jackrabbit.oak.security.user.AuthorizableBaseProvider.getByContentID(AuthorizableBaseProvider.java:56)
 at org.apache.jackrabbit.oak.security.user.AuthorizableBaseProvider.getByID(AuthorizableBaseProvider.java:51)
 at org.apache.jackrabbit.oak.security.user.UserProvider.getAuthorizable(UserProvider.java:211)
 at org.apache.jackrabbit.oak.security.user.UserManagerImpl.getAuthorizable(UserManagerImpl.java:110)
 at org.apache.jackrabbit.oak.jcr.delegate.UserManagerDelegator$1.performNullable(UserManagerDelegator.java:64)
 at org.apache.jackrabbit.oak.jcr.delegate.UserManagerDelegator$1.performNullable(UserManagerDelegator.java:61)
 at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performNullable(SessionDelegate.java:243)
 at org.apache.jackrabbit.oak.jcr.delegate.UserManagerDelegator.getAuthorizable(UserManagerDelegator.java:61)
 at com.adobe.granite.workflow.core.WorkflowSessionFactory.isSuperUser(WorkflowSessionFactory.java:356)
 at com.adobe.granite.workflow.core.WorkflowSessionFactory.getWorkflowSession(WorkflowSessionFactory.java:389)
 at com.adobe.granite.workflow.core.WorkflowSessionFactory.getAdapter(WorkflowSessionFactory.java:515)
 at org.apache.sling.adapter.internal.AdapterManagerImpl.getAdapter(AdapterManagerImpl.java:147)
 at com.adobe.granite.workflow.core.jcr.WorkItemAdapterFactory.getAdapter(WorkItemAdapterFactory.java:128)
 at org.apache.sling.adapter.internal.AdapterManagerImpl.getAdapter(AdapterManagerImpl.java:147)
 at com.adobe.granite.workflow.core.jcr.WorkItemManager.getInboxItems(WorkItemManager.java:289)
 at com.adobe.granite.workflow.core.WorkflowSessionImpl.getActiveInboxItems(WorkflowSessionImpl.java:711)
 at com.adobe.granite.workflow.core.WorkflowSessionImpl.getActiveInboxItems(WorkflowSessionImpl.java:618)
 at org.apache.jsp.libs.cq.gui.components.shell.badge.data_json_jsp._jspService(data_json_jsp.java:609)

Environnement

AEM 6.2 SP1

Cause

Lorsqu'un utilisateur ou un groupe dispose de nombreux éléments de boîte de réception en attente, le badge pulse.data.json est lent.  Les appels à pulse.data.json expirent puis surchargent l'AEM.

Résolution

Installez le dernier Fix Pack cumulatif pour corriger le bogue.

I. Appliquez la solution

Comme il n’est pas possible d’installer un pack de correctif sur un environnement AEM de production dans une courte période comme solution temporaire, procédez comme suit :

  1. Allez à CRXDe http://aem-host:port/crx/de/index.jsp et connectez-vous en tant qu'administrateur.

  2. Créez cette structure de fichiers : Folder nodes /apps/granite/ui/components/shell/clientlibs/shell/js

  3. Cliquez sur « Tout enregistrer ».

  4. Accédez à la superposition pour /libs/granite/ui/components/shell/clientlibs/shell/js/badge.js et modifiez le code comme illustré ci-dessous :

    Avant:

    setInterval(function() {
    updateBadge(el, src, true);
    }, 2000);

    Après (mettre à jour toutes les 5 minutes) :

    setInterval(function() {
    updateBadge(el, src, true);
    }, 300000);

    Telechargement

II. Nettoyez les anciens flux de travail et les tâches en cours d’exécution

En plus de corriger l’intervalle du badge de notification du flux de production, la cause du problème est due à un trop grand nombre de tâches en attente dans la boîte de réception de l’utilisateur.  Pour résoudre ce problème, vous devez supprimer les éléments de la boîte de réception du flux de travail et les tâches qui ne sont plus nécessaires :

  1. Accédez à l'objet JMX de la maintenance du flux de travail :
     http://host:port/system/console/jmx/com.adobe.granite.workflow%3Atype%3DMaintenance

  2. Si vous n'avez pas besoin de flux de travail actifs, vous pouvez alors exécuter le nettoyage du flux de travail en lançant purgeActive with dryRun = false.

  3. Accédez à http://host:port/crx/explorer/index.jsp and log in as admin.

  4. Ouvrez l'explorateur de contenu.

  5. Accédez à /etc/taskmanagement/tasks.

  6. Supprimer les tâches en cliquant avec le bouton droit sur le nœud de fichier, puis en choisissant Supprimer régulièrement.

  7. Désactiver analyse préliminaire et exécutez la suppression.

  8. En outre, vous avez plus de tâches exécutées dans /content/projects. Utilisez /projects.html pour supprimer les anciens projets qui ne sont plus nécessaires.

  9. Utilisez CRXDe pour lancer les sous-nœuds /content/projects et supprimez toutes les tâches qui ne sont plus nécessaires. Par exemple : /content/projects/geometrixx/outdoors/jcr:content/dashboard/gadgets/tasks

 Adobe

Recevez de l’aide plus rapidement et plus facilement

Nouvel utilisateur ?

Adobe MAX 2024

Adobe MAX
La conférence sur la créativité

Du 14 au 16 octobre à Miami Beach et en ligne

Adobe MAX

La conférence sur la créativité

Du 14 au 16 octobre à Miami Beach et en ligne

Adobe MAX 2024

Adobe MAX
La conférence sur la créativité

Du 14 au 16 octobre à Miami Beach et en ligne

Adobe MAX

La conférence sur la créativité

Du 14 au 16 octobre à Miami Beach et en ligne