Resolución de problemas de índices Oak

Última actualización: 2023-05-05
  • Creado para:
  • Developer
PRECAUCIÓN

AEM 6.4 ha llegado al final de la compatibilidad ampliada y esta documentación ya no se actualiza. Para obtener más información, consulte nuestra períodos de asistencia técnica. Buscar las versiones compatibles here.

Reindexación lenta

AEM proceso de reindexación interna recopila datos del repositorio y los almacena en los índices Oak para admitir la consulta del contenido de forma eficaz. En circunstancias excepcionales, el proceso puede llegar a ser lento o incluso atascado. Esta página actúa como guía de solución de problemas para ayudar a identificar si la indexación es lenta, encontrar la causa y resolver el problema.

Es importante distinguir entre la reindexación que lleva una cantidad de tiempo inapropiadamente larga y la reindexación que lleva mucho tiempo porque está indexando grandes cantidades de contenido. Por ejemplo, el tiempo que se tarda en indexar el contenido se escala con la cantidad de contenido, por lo que los repositorios de producción grandes tardarán más en reindexarse que los repositorios de desarrollo pequeños.

Consulte la Prácticas recomendadas en consultas e indexación para obtener información adicional sobre cuándo y cómo volver a indexar contenido.

Detección inicial

La detección inicial de la indexación lenta requiere la revisión de la variable IndexStats JMX MBeans. En la instancia de AEM afectada, haga lo siguiente:

  1. Abra la consola web y haga clic en la pestaña JMX o vaya a https://<host>:<port>/system/console/jmx (por ejemplo, http://localhost:4502/system/console/jmx).

  2. Vaya a la IndexStats Mbeans.

  3. Abra el IndexStats MBeans para " async" y " fulltext-async".

  4. Para ambos MBeans, compruebe si la variable Listo timestamp y LastIndexTime la marca de tiempo es inferior a 45 minutos desde la hora actual.

  5. Para cualquiera de los MBean, si el valor de tiempo (Listo o LastIndexedTime) es bueno a 45 minutos desde el momento actual, entonces el trabajo de índice está fallando o tardando demasiado. Esto hace que los índices asíncronos estén obsoletos.

La indexación se pone en pausa después de un cierre forzado

Un cierre forzado provoca AEM suspensión de la indexación asincrónica durante un máximo de 30 minutos después del reinicio y, por lo general, requiere otros 15 minutos para completar la primera fase de reindexación, durante un total aproximado de 45 minutos (volver a la Detección inicial periodo de tiempo de 45 minutos). En el caso de que sospeche que la indexación está en pausa después de un cierre forzado:

  1. En primer lugar, determine si la instancia de AEM se cerró de manera forzada (el proceso de AEM fue violado a la fuerza o se produjo un fallo de energía) y luego se reinició.

  2. Si se produjo el cierre forzado, al reiniciar, AEM suspende automáticamente la reindexación durante un máximo de 30 minutos.

  3. Espere aproximadamente 45 minutos para que la AEM reanude las operaciones de indexación asíncronas normales.

Grupo de subprocesos sobrecargado

NOTA

Para AEM 6.1, asegúrese de que AEM 6.1 CFP 11 está instalado.

En circunstancias excepcionales, el grupo de subprocesos utilizado para administrar la indexación asíncrona puede sobrecargarse. Para aislar el proceso de indexación, se puede configurar un grupo de subprocesos para evitar que otros trabajos de AEM interfieran con la capacidad de Oak de indexar contenido de manera oportuna. Para ello, debe:

  1. Defina un nuevo grupo de subprocesos aislado para el programador de Sling de Apache que se utilizará para la indexación asíncrona:

    • En la instancia de AEM afectada, vaya a AEM OSGi Web Console>OSGi>Configuration>Apache Sling Scheduler o vaya a https://<host>:<port>/system/console/configMgr (por ejemplo, http://localhost:4502/system/console/configMgr)
    • Agregue una entrada al campo "Grupos de subprocesos permitidos" con el valor "roak".
    • Haga clic en Guardar en la parte inferior derecha para guardar los cambios.

    chlimage_1-119

  2. Compruebe que el nuevo grupo de subprocesos del programador de Sling de Apache esté registrado y se muestre en la consola web del estado del programador de Sling de Apache.

    • Vaya a la consola web OSGi de AEM > Estado > Programador de Sling o vaya a https://<host>:<port>/system/console/status-slingscheduler (por ejemplo, http://localhost:4502/system/console/status-slingscheduler)

    • Compruebe que existen las siguientes entradas de grupo:

      • ApacheSlingoak
      • ApacheSlingdefault

    chlimage_1-120

La cola de observación está llena

Si se realizan demasiados cambios y confirmaciones en el repositorio en un corto periodo de tiempo, la indexación se puede retrasar debido a una cola de observación completa. En primer lugar, determine si la cola de observación está llena:

  1. Vaya a la consola web y haga clic en la pestaña JMX o vaya a https://<host>:<port>/system/console/jmx (por ejemplo, http://localhost:4502/system/console/jmx)

  2. Abra Oak Repository Statistics MBean y determine si existe ObservationQueueMaxLength es bueno que 10 000.

    • En las operaciones normales, este valor máximo siempre debe reducirse eventualmente a cero (especialmente en la variable per second (sección) para verificar que la variable ObservationQueueMaxLengthLas métricas de segundos de son 0.
    • Si los valores son 10 000 o más y aumentan de forma constante, esto indica que al menos una (posiblemente más) cola no se puede procesar tan rápido como se produzcan nuevos cambios (confirmaciones).
    • Cada cola de observación tiene un límite (10 000 por defecto) y si la cola alcanza ese límite, su procesamiento se degrada.
    • Cuando se utiliza MongoMK, a medida que aumentan las longitudes de cola, se degrada el rendimiento interno de la caché de Oak. Esta correlación se puede ver en un aumento missRate para el DocChildren en el Consolidated Cache statistics MBean.
  3. Para evitar superar los límites aceptables de las colas de observación, se recomienda:

Identificación y corrección de un proceso de reindexación atascado

La reindexación puede considerarse "completamente atascada" bajo dos condiciones:

  • La reindexación es muy lenta, hasta el punto en que no se notifica ningún progreso significativo en los archivos de registro con respecto al número de nodos atravesados.

    • Por ejemplo, si no hay mensajes en el curso de una hora o si el progreso es tan lento que tardará una semana o más en terminar.
  • La reindexación está atascada en un bucle sin fin si aparecen excepciones repetidas en los archivos de registro (por ejemplo, OutOfMemoryException) en el subproceso de indexación. La repetición de las mismas excepciones en el registro, indica que Oak intenta indexar lo mismo repetidamente, pero falla en el mismo tema.

Para identificar y corregir un proceso de reindexación atascado, haga lo siguiente:

  1. Para identificar la causa de la indexación atascada, se debe recopilar la siguiente información:

  2. Después de recopilar toda la información descrita en el paso 1, reinicie AEM.

    • El reinicio AEM puede resolver el problema en el caso de una carga simultánea alta (desbordamiento de la cola de observación o algo similar).
    • Si un reinicio no resuelve el problema, abra un problema con Servicio de atención al cliente de Adobe y proporcionar toda la información recopilada en el paso 1.

Anulación segura de la reindexación asincrónica

La reindexación se puede anular de forma segura (se detiene antes de que se complete) mediante la variable async, async-reindexy f ulltext-async rutas de indexación ( IndexStats Mbean). Para obtener más información, consulte también la documentación de Apache Oak sobre Cómo evitar la reindexación. Además, tenga en cuenta que:

  • La reindexación de los índices de propiedades de Lucene y Lucene puede anularse porque son naturalmente asíncronos.
  • La reindexación de los índices de propiedades de Oak solo se puede anular si la reindexación se inició mediante la variable PropertyIndexAsyncReindexMBean.

Para anular la reindexación de forma segura, siga estos pasos:

  1. Identifique el IndexStats MBean que controla el carril de reindexación que debe detenerse.

    • Vaya a la consola JMX de IndexStats MBean adecuada en AEM OSGi Web Console>Main>JMX o https://<host>:<port>/system/console/jmx (por ejemplo, http://localhost:4502/system/console/jmx)

    • Abra IndexStats MBean en función del carril de reindexación que desee detener ( async, async-reindexo fulltext-async)

      • Para identificar el carril apropiado y, por lo tanto, la instancia de IndexStats MBean, consulte la propiedad "async" de los índices Oak. La propiedad "async" contiene el nombre del carril: async, async-reindexo fulltext-async.
      • El carril también está disponible accediendo AEM Administrador de índices en la columna "Sincronización". Para acceder al Administrador de índices, vaya a Operaciones > Diagnóstico > Administrador de índices.

    chlimage_1-121

  2. Invocar el abortAndPause() en el IndexStats MBean.

  3. Marque la definición del índice Oak adecuadamente para evitar reanudar la reindexación cuando se reanude el carril de indexación.

    • Cuando se vuelve a indexar un existente index, establezca la propiedad reindex en false

      • /oak:index/someExistingIndex@reindex=false
    • O bien, para un new índice, ya sea:

      • Establezca la propiedad de tipo como deshabilitada

        • /oak:index/someNewIndex@type=disabled
      • o eliminar por completo la definición del índice

    Confirme los cambios en el repositorio cuando se completen.

  4. Finalmente, reanude la indexación asíncrona en el carril de indexación anulado.

    • En el IndexStats MBean que emitió el abortAndPause() en el paso 2, invoque la función resume()comando.

Prevención de la reindexación lenta

Es mejor volver a indexar durante periodos silenciosos (por ejemplo, no durante una ingesta de contenido grande) e idealmente durante las ventanas de mantenimiento cuando AEM carga se conoce y controla. Además, asegúrese de que la reindexación no tenga lugar durante otras actividades de mantenimiento.

En esta página