Recopilación de datos almacenados desechables data-store-garbage-collection
Cuando se quita un recurso WCM convencional, la referencia al registro del almacén de datos subyacente se puede quitar de la jerarquía de nodos, pero el registro del almacén de datos en sí permanece. Este registro de almacén de datos al que no se hace referencia se convierte en "basura" que no necesita conservarse. En los casos en que existen varios recursos de basura, es beneficioso deshacerse de ellos para conservar espacio y optimizar el rendimiento del mantenimiento del sistema de archivos y la copia de seguridad.
En su mayor parte, una aplicación WCM tiende a recopilar información, pero no a eliminarla casi con la misma frecuencia. Aunque se añaden nuevas imágenes, incluso sustituyendo a las versiones antiguas, el sistema de control de versiones conserva la antigua y admite la reversión a ella si es necesario. Por lo tanto, la mayor parte del contenido que pensamos que se añade al sistema se almacena de forma efectiva de forma permanente. Entonces, ¿cuál es la fuente típica de "basura" en el repositorio que podríamos querer limpiar?
AEM utiliza el repositorio de como almacenamiento para varias actividades internas y de mantenimiento:
- Paquetes creados y descargados
- Archivos temporales creados para la replicación de publicación
- Cargas del flujo de trabajo
- Assets creado temporalmente durante el procesamiento DAM
Cuando cualquiera de estos objetos temporales es lo suficientemente grande como para requerir almacenamiento en el almacén de datos y cuando el objeto deja de usarse, el registro del almacén de datos permanece como "basura". En una aplicación típica de WCM de autor/publicación, la mayor fuente de residuos de este tipo suele ser el proceso de activación de la publicación. Cuando los datos se replican en Publish, se recopilan por primera vez en colecciones en un formato de datos eficaz denominado "Durbo" y se almacenan en el repositorio en /var/replication/data
. Los paquetes de datos suelen superar el umbral de tamaño crítico para el almacén de datos y, por lo tanto, terminan almacenados como registros del almacén de datos. Cuando se complete la replicación, se eliminará el nodo de /var/replication/data
, pero el registro del almacén de datos permanecerá como "basura".
Otra fuente de residuos recuperables son los paquetes. Los datos del paquete, como todo lo demás, se almacenan en el repositorio y, por lo tanto, para los paquetes que superan los 4 KB, en el almacén de datos. En el transcurso de un proyecto de desarrollo o a lo largo del tiempo mientras se mantiene un sistema, los paquetes se pueden crear y reconstruir muchas veces, cada compilación resulta en un nuevo registro de almacén de datos, dejando huérfano el registro de la compilación anterior.
¿Cómo funciona la recolección de elementos no utilizados del almacén de datos? how-does-data-store-garbage-collection-work
Si el repositorio se ha configurado con un almacén de datos externo, la recolección de elementos no utilizados del almacén de datos se ejecutará automáticamente como parte de la ventana de mantenimiento semanal. El administrador del sistema también puede ejecutar la recolección de elementos no utilizados del almacén de datos manualmente según sea necesario. En general, se recomienda que la recolección de elementos no utilizados del almacén de datos se realice periódicamente, pero que se tengan en cuenta los siguientes factores al planificar las colecciones de elementos no utilizados del almacén de datos:
- Las recopilaciones de elementos no utilizados del almacén de datos tardan tiempo y pueden afectar al rendimiento, por lo que se deben planificar en consecuencia.
- La eliminación de los registros de basura del almacén de datos no afecta al rendimiento normal, por lo que no se trata de una optimización del rendimiento.
- Si la utilización del almacenamiento y factores relacionados como los tiempos de copia de seguridad no son un problema, la recolección de elementos no utilizados del almacén de datos podría aplazarse con seguridad.
El recolector de elementos no utilizados del almacén de datos toma nota primero de la marca de tiempo actual cuando comienza el proceso. La recopilación se lleva a cabo utilizando un algoritmo de patrón de barrido/marca de paso múltiple.
En la primera fase, el recolector de elementos no utilizados del almacén de datos realiza un recorrido completo de todo el contenido del repositorio. Para cada objeto de contenido que tiene una referencia a un registro de almacén de datos, localizó el archivo en el sistema de archivos, realizando una actualización de metadatos (modificando el atributo "última modificación" o MTIME). En este punto, los archivos a los que se accede mediante esta fase se convierten en más recientes que la marca de tiempo de línea de base inicial.
En la segunda fase, el recolector de elementos no utilizados del almacén de datos atraviesa la estructura de directorios física del almacén de datos de la misma manera que un "hallazgo". Examinó el atributo "última modificación" o MTIME del archivo y realiza la siguiente determinación:
- Si MTIME es más reciente que la marca de tiempo de línea de base inicial, el archivo se encontró en la primera fase o es un archivo completamente nuevo que se agregó al repositorio mientras el proceso de recopilación estaba en curso. En cualquiera de estos casos, el registro se considera activo y el archivo no se elimina.
- Si MTIME es anterior a la marca de tiempo de línea de base inicial, el archivo no es un archivo al que se hace referencia de forma activa y se considera basura extraíble.
Este método funciona bien para un solo nodo con un almacén de datos privado. Sin embargo, el almacén de datos se puede compartir y, si es así, las referencias activas potencialmente activas a registros del almacén de datos de otros repositorios no se comprueban y los archivos a los que se hace referencia activos se pueden eliminar por error. Es imperativo que el administrador del sistema entienda la naturaleza compartida del almacén de datos antes de planificar las colecciones de elementos no utilizados y que utilice únicamente el proceso de recopilación de elementos no utilizados integrado simple del almacén de datos cuando sepa que el almacén de datos no se comparte.
Ejecución de la recolección de basura del almacén de datos running-data-store-garbage-collection
AEM Existen tres formas de ejecutar la recolección de elementos no utilizados del almacén de datos, según la configuración del almacén de datos en el que se esté ejecutando el almacenamiento de datos:
-
Mediante Limpieza de revisión: un mecanismo de recolección de elementos no utilizados que se usa generalmente para la limpieza del almacén de nodos.
-
Mediante recolección de elementos no utilizados del almacén de datos: un mecanismo de recolección de elementos no utilizados específico para los almacenes de datos externos, disponible en el tablero de operaciones.
-
Mediante la consola JMX.
Si TarMK se usa como almacén de nodos y como almacén de datos, Revision Cleanup se puede usar para la recolección de elementos no utilizados tanto del almacén de nodos como del almacén de datos. Sin embargo, si se configura un almacén de datos externo como el almacén de datos del sistema de archivos, la recopilación de elementos no utilizados del almacén de datos se debe activar explícitamente de forma independiente de la Limpieza de revisión. La recopilación de elementos no utilizados del almacén de datos se puede activar mediante el tablero de operaciones o la consola JMX.
AEM En la tabla siguiente se muestra el tipo de recolección de elementos no utilizados del almacén de datos que debe usarse para todas las implementaciones de almacén de datos admitidas en el 6:
Ejecución de la recopilación de basura del almacén de datos mediante el tablero de operaciones running-data-store-garbage-collection-via-the-operations-dashboard
La ventana de mantenimiento semanal integrada, disponible a través de Operations Dashboard, contiene una tarea integrada para almacenar en déclencheur la recolección de elementos no utilizados del almacén de datos a la 1 a. m. los domingos.
Si necesita ejecutar la recolección de basura del almacén de datos fuera de este tiempo, se puede activar manualmente a través del Tablero de operaciones.
Antes de ejecutar la recolección de elementos no utilizados del almacén de datos, debe comprobar que no se estén ejecutando copias de seguridad en ese momento.
-
Abra el tablero de operaciones en Navegación > Herramientas > Operaciones > Mantenimiento.
-
Haga clic en Ventana de mantenimiento semanal.
-
Seleccione la tarea Recopilación de residuos del almacén de datos y, a continuación, haga clic en el icono Ejecutar.
-
La recolección de elementos no utilizados del almacén de datos se ejecuta y su estado se muestra en el panel.
Ejecución de la recopilación de basura del almacén de datos mediante la consola JMX running-data-store-garbage-collection-via-the-jmx-console
Esta sección trata sobre la ejecución manual de la recopilación de residuos del almacén de datos a través de la consola JMX. Si la instalación está configurada sin un almacén de datos externo, esto no se aplica a la instalación. En su lugar, consulte las instrucciones sobre cómo ejecutar Revision cleanup en Mantenimiento del repositorio.
Para ejecutar la recolección de elementos no utilizados:
-
En la consola de administración de Apache Felix OSGi, resalte la pestaña Main y seleccione JMX del siguiente menú.
-
A continuación, busque y haga clic en el MBean Administrador de repositorios (o vaya a
https://<host>:<port>/system/console/jmx/org.apache.jackrabbit.oak%3Aname%3Drepository+manager%2Ctype%3DRepositoryManagement
). -
Haga clic en startDataStoreGC(boolean markOnly).
-
escriba "
true
" para el parámetromarkOnly
si es necesario:table 0-row-2 1-row-2 Opción Descripción boolean markOnly Establezca como true para marcar únicamente referencias y no barrer en la operación de marca y barrido. Este modo se utiliza cuando el BlobStore subyacente se comparte entre varios repositorios diferentes. En todos los demás casos, establézcalo en False para realizar la recolección de elementos no utilizados completa. -
Haga clic en Invocar. CRX ejecuta la recolección de elementos no utilizados e indica cuándo se ha completado.
Cannot perform operation: no service of type BlobGCMBean found
después de invocar. AEM Consulte Configuración de almacenes de nodos y almacenes de datos en el 6 para obtener información sobre cómo configurar un almacén de datos de archivos.Automatización de la recolección de basura del almacén de datos automating-data-store-garbage-collection
Si es posible, la recolección de elementos no utilizados del almacén de datos debe ejecutarse cuando haya poca carga en el sistema, por ejemplo, por la mañana.
La ventana de mantenimiento semanal integrada, disponible a través de Operations Dashboard, contiene una tarea integrada para almacenar en déclencheur la recolección de elementos no utilizados del almacén de datos a la 1 a. m. los domingos. También debe comprobar que no hay copias de seguridad en ejecución en este momento. El inicio de la ventana de mantenimiento se puede personalizar mediante el panel de control según sea necesario.
Si no desea ejecutar la recolección de elementos no utilizados del almacén de datos con la ventana de mantenimiento semanal del tablero de operaciones, también se puede automatizar mediante los clientes HTTP wget o curl. A continuación se muestra un ejemplo de cómo automatizar la recolección de elementos no utilizados mediante curl:
curl
comandos es posible que se deban configurar varios parámetros para la instancia; por ejemplo, el nombre de host ( localhost
), el puerto ( 4502
), la contraseña de administrador ( xyz
) y varios parámetros para la recolección de elementos no utilizados del almacén de datos real.Este es un ejemplo de comando curl para invocar la recolección de elementos no utilizados del almacén de datos a través de la línea de comandos:
curl -u admin:admin -X POST --data markOnly=true https://localhost:4503/system/console/jmx/org.apache.jackrabbit.oak"%"3Aname"%"3Drepository+manager"%"2Ctype"%"3DRepositoryManagement/op/startDataStoreGC/boolean
El comando curl vuelve inmediatamente.
Comprobación de coherencia del almacén de datos checking-data-store-consistency
La comprobación de coherencia del almacén de datos informará de cualquier binario del almacén de datos que falte, pero al que aún se haga referencia. Para iniciar una comprobación de coherencia, siga estos pasos:
- Vaya a la consola JMX. Para obtener información sobre cómo usar la consola JMX, consulte Supervisión de recursos del servidor mediante la consola JMX.
- Busque el MBean BlobGarbageCollection y haga clic en él.
- Haga clic en el vínculo
checkConsistency()
.
Una vez completada la comprobación de coherencia, un mensaje mostrará el número de binarios notificados como faltantes. Si el número es mayor que 0, compruebe error.log
para obtener más detalles sobre los binarios que faltan.
A continuación, se muestra un ejemplo de cómo se informan los binarios que faltan en los registros:
11:32:39.673 INFO [main] MarkSweepGarbageCollector.java:600 Consistency check found [1] missing blobs
11:32:39.673 WARN [main] MarkSweepGarbageCollector.java:602 Consistency check failure intheblob store : DataStore backed BlobStore [org.apache.jackrabbit.oak.plugins.blob.datastore.OakFileDataStore], check missing candidates in file /tmp/gcworkdir-1467352959243/gccand-1467352959243