Coleta de lixo do DataStore

Use a coleta de lixo para remover todos os arquivos não utilizados no Data Store. O CRX suporta o armazenamento de dados Jackrabbit, veja http://wiki.apache.org/jackrabbit/DataStore. Por padrão, o CRX usa o FileDataStore, no entanto, o DbDataStore também é suportado.

Para executar a coleta de lixo:

  • Efetue login como administrador
  • No console do CRX, clique em Configuração do Repositório.
  • Clique em Coleta de lixo do Data Store.
  • Selecione uma ou mais das seguintes opções:
Opção Descrição
Execute a coleta de lixo da memória primeiro Para executar a coleta de lixo da memória principal primeiro (também conhecida como coleta de lixo de heap). Esse processo despeja objetos que ainda estão na memória principal, mas não são mais referenciados. A coleta de lixo do armazenamento de dados recupera apenas itens que não estão mais na memória principal.
Excluir itens não utilizados Selecionar essa opção significa que todos os arquivos não utilizados são excluídos do Data Store. Se esta opção estiver desativada, somente a última data modificada dos itens usados será atualizada, mas nenhum arquivo será excluído. Se vários repositórios independentes compartilharem um armazenamento de dados ou se vários clusters distintos compartilharem um armazenamento de dados, não ative essa opção. Em vez disso, remova os itens antigos manualmente ou use um script. (Por exemplo, exclua arquivos com mais de uma semana após a execução da coleta de lixo do repositório de dados em cada repositório). Um cluster é um repositório; isso significa que você pode ativar "Excluir itens não usados" ao usar várias instâncias de cluster que compartilham um repositório.
Use a varredura do gerenciador de persistência Quando essa opção está ativada, o processo usa uma varredura de gerenciador de persistência de baixo nível se o gerenciador de persistência suportar essa opção. A seleção dessa opção acelera o processo de coleta de lixo, mas pode desacelerar as operações simultâneas. Se a opção estiver desativada, será usado um algoritmo de deslocamento de nó de nível superior.
  • Clique em Executar.

Coleta de lixo em um ambiente agrupado

Data Store compartilhado

Ao usar um cluster CRX, a coleta de lixo do Data Store pode ser executada em qualquer nó do cluster.

Cluster do Data Store

Ao usar o armazenamento de dados do cluster (opção de configuração de armazenamento de dados ClusterDataStore), execute a coleta de lixo em todos os nós do cluster separadamente.

Data Store com vários repositórios

Se vários repositórios distintos usam o mesmo armazenamento de dados ao mesmo tempo (como as instâncias autor e publicar instâncias), não use o Excluir opção. Em vez disso, o processo é o seguinte:

  • Faça backup do seu armazenamento de dados.
  • Faça o login no CRX como administrador.
  • Executar coleta de lixo de armazenamento de dados sem qualquer uma das opções marcadas (certifique-se de que especialmente 'Excluir itens não usados' não esteja marcada).
  • Dentro de cinco dias, execute-o em todos os repositórios que compartilham um armazenamento de dados. É possível definir o atraso como 0, mas isso aumenta a carga no sistema de arquivos. Além disso, executar o processo simultaneamente em todos os repositórios é possível, mas aumenta a I/O no sistema de arquivos que contém o armazenamento de dados. Depois que esse processo terminar, os arquivos do armazenamento de dados terão uma nova data de última modificação.
  • Se o processo demorar mais de cinco dias, aumente a contagem de dias ao excluir (7 por padrão). A Adobe recomenda que você use uma margem de dois dias.
  • Para listar os arquivos com mais de sete dias usando a seguinte linha de comando:
    find repository/datastore/* -mtime +7 -type f
  • Este comando imprime o número de bytes que podem ser salvos:
    find repository/datastore/* -mtime +7 -type f -exec ls -l {} \; | awk '{ s+=$5 } END { print s }'
  • Exclua todos os arquivos com mais de sete dias usando a seguinte linha de comando. AVISO: se a coleta de lixo do repositório de dados não foi executada nos últimos dias, ela exclui arquivos que ainda são necessários.
    find repository/datastore/* -mtime +7 -type f -exec rm {} \;

Iniciando a coleta de lixo em um aplicativo

Para executar a coleta de lixo manualmente, use o seguinte código:

GarbageCollector gc; SessionImpl si = (SessionImpl)session; gc = si.createDataStoreGarbageCollector(); // opcional (se você quiser implementar uma barra de progresso / output):
gc.setScanEventListener(this); gc.scan(); gc.stopScan(); // pode ser um botão separado, se vários repositórios usarem o mesmo armazenamento de dados: gc.deleteUnused(); Alterações na coleta de lixo no Data Store do CQ5.5 em diante (Aplica-se ao crx 2.3.15 ou posterior)

A partir do CQ 5.5, o CRX que fornece o repositório é um serviço OSGi. O CRX é registrado no Registro de Serviço OSGi como serviço MBean. Este MBean está disponível no Console JMX, que expõe os atributos e operações da coleta de lixo do armazenamento de dados.

  • A interface do usuário para executar a coleta de lixo do armazenamento de dados é http://<host>:<port>/system/console/jmx/com.adobe.granite%3Atype%3DRepository
  • A nova interface do usuário tem apenas uma opção "Excluir itens não usados", que você pode definir como verdadeiro ou falso com base no caso de uso. Um exemplo de comando curl com opção definida como false é [1].
  • As outras opções
    • "Executar a coleta de lixo da memória primeiro" não faz parte da interface de usuário da coleta de lixo do datastore e está disponível em http://<host>:<port>/system/console/memoryusage.
    • "Usar uma verificação do gerenciador de persistência" foi removido.
    • "Executar a coleta de lixo da memória primeiro" foi movido para http://<host>:<port>/system/console/memoryusage
    • O atraso de tempo padrão é definido como 10.  Para qualquer alteração, modifique uma propriedade do bean dataStoreGarbageCollectionDelay. O comando curl para definir 15 é mostrado em [2].

[1] curl -u admin:admin -X POST --data delete=false -H "Referer: http://<host>:<port>/system/console/jmx/com.adobe.granite%3Atype%3DRepository" http://<host>:<port>/system/console/jmx/com.adobe.granite%3Atype%3DRepository/op/runDataStoreGarbageCollection/java.lang.Boolean

[2] curl -u admin:admin -X POST --data value=15 -H "Referer: http://<host>:<port>/system/console/jmx/com.adobe.granite%3Atype%3DRepository" http://<host>:<port>/system/console/jmx/com.adobe.granite%3Atype%3DRepository/a/DataStoreGarbageCollectionDelay

Observação:

AEM 5.6.1 (CRX 2.4.30+)

A nova coleta de lixo improvisada de armazenamento rápido de dados foi implementada no 5.6.1. Que é agora ativada por padrão (runDataStoreGarbageCollection).  Para executar o método antigo de coleta de lixo do armazenamento de dados, use runDataStoreClassicGarbageCollection, que executa a coleta de lixo do armazenamento de dados, evitando o uso da coleta de lixo otimizada do TarPM. 

  • Se você estiver executando uma coleta de lixo "rápida" (runDataStoreGarbageCollection), certifique-se de NÃO interromper o uso usando stopDataStoreGarbageCollection() até ter instalado o hotfix 3241 5.6.1 (veja abaixo o URL do Compartilhamento de Pacotes e o arquivo leiame)

Baixe o hotfix 3241 do compartilhamento de pacotes clicando aqui.

Download

 Adobe

Receba ajuda com mais rapidez e facilidade

Novo usuário?