Fix Nextcloud Preview Generation High CPU Usage: Set Up Preview Generator
Short answer: Install the Preview Generator app, enable it, run one carefully scoped initial generation, then schedule occ preview:pre-generate during quieter hours. Also cap preview sizes and the number of new previews Nextcloud generates at once. The app moves work away from the moment a user opens a file; it does not impose a hard CPU ceiling, and it can increase disk use.
This setup fits a self-hosted Nextcloud server where thumbnails cause noticeable CPU spikes during browsing, especially on a small server with an established photo or document library. It is less useful if your instance uses server-side encryption: the Preview Generator project lists encryption as a known incompatibility. Managed hosting, Nextcloud AIO, Docker, and package installs also use different command paths, so adapt commands to your deployment. Do not run them from a guessed directory.
The current app instructions recommend installing and enabling the app, running preview:generate-all once, and scheduling preview:pre-generate for later file changes. The first command can be expensive on a large library. Start with one user or folder and one worker. Check the Preview Generator project README and command options and select a release compatible with your Nextcloud version in the Nextcloud App Store.
1. Confirm this is the right fix
First establish when the CPU rises. If it happens when users open photo-heavy folders or documents that need previews, pre-generation may shift much of that work to a scheduled task. If CPU stays high when nobody is browsing, or spikes coincide with a different service, Preview Generator may not address the cause. Check your process monitor and Nextcloud logs before changing settings.
Preview Generator records files that have been added or changed and processes them in a background job. Existing previews make later requests cheaper, but missing previews can still be generated on demand before the scheduled job reaches them. That means the app reduces user-facing bursts when the queue is caught up; it cannot promise zero CPU spikes. It also trades storage space for faster preview delivery. A small library with infrequent browsing may be fine with Nextcloud’s on-demand behavior.
2. Install the compatible app release
A generic cloud admin page shows an image-preview app card switched on, illustrating the install and enable step; the layout is not a version-specific screenshot.
Inicie sessão como administrador do Nextcloud, abra a área de Aplicativos, encontre o Preview Generator , instale-o e ative-o. Antes de prosseguir, confirme se a App Store oferece uma versão estável para a sua versão principal do Nextcloud instalada. Evite copiar manualmente a pasta do aplicativo mais recente sobre uma versão que a App Store marque como incompatível.
Administradores com acesso ao shell podem verificar ou habilitar o aplicativo por meio de [instruções occespecíficas]. Um comando típico de instalação de pacote é mostrado abaixo; altere o binário do PHP e o caminho do Nextcloud para corresponder ao seu host. Para Docker ou AIO, use o comando de contêiner ou as instruções do agendador compatíveis com essa implantação.
3. Configure as tarefas em segundo plano do Nextcloud para serem executadas pelo Cron.
Nas configurações de administração do Nextcloud, selecione Cron como modo de execução em segundo plano e verifique se o cron do sistema Nextcloud está realmente em execução. O arquivo README do aplicativo informa que a tarefa em segundo plano de pré-visualização integrada requer o modo Cron; os modos Webcron e AJAX não são compatíveis com essa tarefa de longa duração. Se o seu cron padrão estiver com problemas, instalar este aplicativo por si só não manterá a fila em movimento.
Não confunda o agendamento normal do Nextcloud no cron.php com o preview:pre-generateagendamento dedicado opcional do aplicativo. Ambos são mecanismos distintos. Você pode usar a tarefa em segundo plano integrada do aplicativo ou um comando cron dedicado do sistema. Se optar pelo comando dedicado, o projeto recomenda desativar a tarefa em segundo plano de pré-visualização integrada para evitar a execução simultânea de ambos os caminhos para a mesma fila.
Uma página de agendamento mostra uma tarefa recorrente ativa que delega o trabalho de pré-visualização a uma janela de comando e retorna miniaturas dos resultados.
4. Reduza a carga de trabalho de pré-visualização antes da primeira execução em lote.
Um painel de configuração genérico combina configurações semelhantes a código com controles de tamanho de imagem e processador, ilustrando os dois limites que os administradores devem ajustar.
Para a criação de pré-visualizações que consomem muita CPU, reduza a quantidade de novas pré-visualizações executadas simultaneamente. No manual de configuração do Nextcloud 35, o parâmetro preview_concurrency_new`preview_generate` controla a geração simultânea de novas pré-visualizações; o valor padrão documentado é quatro, e o manual recomenda que esse valor não ultrapasse o número de núcleos da CPU. Em servidores com recursos limitados, teste um valor como dois, ou um caso o servidor fique lento. Isso limita o trabalho simultâneo, mas uma única imagem ou vídeo grande ainda pode consumir uma quantidade significativa de CPU.
As dimensões da pré-visualização também importam. O Nextcloud 35 tem uma largura e altura máximas padrão de 4096 pixels. Diminuir preview_max_xesses preview_max_yvalores config/config.phppode reduzir as necessidades de processamento e memória, à custa de pré-visualizações menores. Faça backup do arquivo de configuração e incorpore as configurações ao array PHP existente; não substitua o arquivo por um trecho de código. Por exemplo, um administrador pode definir ambos os valores para 2048 e testar a qualidade nas visualizações de Arquivos e Fotos.
O aplicativo também pode gerar diversas variantes de tamanho. Seu arquivo README fornece um perfil de tamanho reduzido para uso comum em Arquivos, Fotos e Atividades: tamanhos quadrados 64 256, tamanhos de preenchimento de largura e altura 256 4096, e opções widthSizespara heightSizesignorar esses grupos de variantes. Use essas configurações somente se elas forem adequadas aos aplicativos que seus usuários utilizam; linhas do tempo do Memories ou outros aplicativos podem precisar de tamanhos adicionais. O projeto observa que os tamanhos de pré-visualização devem atender às regras de tamanho aceitas e não podem exceder os máximos configurados. Consulte as configurações de tamanho e qualidade de pré-visualização do Nextcloud e a referência de configuração específica da versão .
5. Gere pré-visualizações existentes em um pequeno lote inicial.
Após ativar o aplicativo e definir os limites, execute o gerador inicial em uma pasta de teste ou em um único usuário, em vez de em toda a instância. O aplicativo permite filtrar por ID de usuário ou caminho, e o comando aceita uma quantidade de workers. Use um worker para uma primeira execução conservadora:
A página de configurações de tarefas em segundo plano mostra a opção de tarefa agendada selecionada; os rótulos exatos e as opções disponíveis variam de acordo com a versão do Nextcloud.
Substitua `<caminho> alice`, `<caminho>` e `<caminho de instalação>` pelos valores reais do seu servidor. A opção `<caminho>` usa o formato ` /[username]/files/[folder path]<caminho>`. Se você omitir o filtro de caminho e usuário, o comando poderá percorrer toda a biblioteca. Execute o lote quando houver menos usuários ativos, monitore o uso de CPU, memória e espaço em disco e pare para reavaliar se o servidor ficar instável. Não aumente o número de workers apenas para terminar mais rápido até que você tenha medido o efeito.
6. Agendar arquivos recém-adicionados ou alterados
Assim que o lote de teste se comportar bem, adicione-o preview:pre-generatea um agendamento cron do sistema. O arquivo README do aplicativo sugere um intervalo de dez minutos como exemplo, mas isso não é um requisito. Escolha um intervalo que corresponda ao volume de uploads e ao tempo ocioso disponível. Por exemplo, um arquivo crontab pertencente à conta do servidor web poderia conter a seguinte linha, com os caminhos ajustados para a instalação:
Uma janela no estilo terminal exibe uma pasta selecionada seguida por miniaturas de imagens, representando uma primeira passagem de um único processo em um caminho limitado.
Se você utiliza este cron de sistema dedicado, desative a tarefa em segundo plano de pré-visualização integrada do aplicativo, conforme recomendado pelo projeto. A configuração documentada do aplicativo é:
Mantenha a tarefa cron.php padrão do Nextcloud ativada. Para contêineres e plataformas hospedadas, use o agendador compatível com a plataforma em vez de inserir o caminho do host em uma entrada cron do contêiner. Se o aplicativo estiver instalado com criptografia ativada, pare aqui e consulte seu administrador ou provedor de hospedagem; o projeto atualmente lista essa configuração como não compatível.
7. Monitore a fila e confirme a melhoria.
Um painel de monitoramento genérico combina um gráfico de CPU com barras de progresso da fila para comparar a carga do servidor e visualizar o backlog.
Execute o comando occ preview:queue-statspara inspecionar a fila de pré-geração e as pré-visualizações desatualizadas. Uma fila que diminui entre as execuções agendadas sugere que o processo está conseguindo acompanhar o ritmo. Se a fila crescer constantemente, significa que os usuários estão adicionando arquivos mais rápido do que o processo configurado consegue processá-los; aumente a frequência de execução ou os limites de tarefas permitidos com cautela, após verificar se a carga extra da CPU é aceitável. O aplicativo expõe os limites de tempo de execução da tarefa e de pré-visualizações por execução. O arquivo README informa que zero significa ilimitado, portanto, não escolha zero indiscriminadamente em um host com recursos limitados.
Compare os picos de uso da CPU antes e depois da implementação em horários semelhantes. Em seguida, abra uma pasta de fotos representativa e uma pré-visualização de documento como um usuário normal. Confirme se as miniaturas aparecem, se as páginas continuam respondendo e se o uso da CPU se estabiliza após o processamento do lote agendado. Um perfil de uso da CPU mais estável durante o dia, com progresso adequado na fila, é um resultado útil; um acúmulo de tarefas em constante crescimento ou sessões de usuário mais lentas indicam que o agendamento, o perfil de tamanho ou o provedor de pré-visualização subjacente precisam ser reavaliados.
Uma galeria no estilo do Files exibe miniaturas de imagens, representando a verificação visual de que as pré-visualizações solicitadas foram carregadas.
Limites importantes e limpeza segura
Alguns tipos de pré-visualização dependem de programas do lado do servidor: o manual do Nextcloud lista o FFmpeg para pré-visualizações de vídeo e o LibreOffice para pré-visualizações de documentos do Office. Esses formatos podem se comportar de maneira diferente das miniaturas de imagens comuns, e o suporte a eles depende da configuração do provedor. Comece reduzindo a concorrência e testando um conjunto limitado de arquivos antes de trocar de provedor ou adicionar serviços.
Se você alterar as dimensões da pré-visualização ou os tipos de arquivo suportados e precisar descartar as pré-visualizações em cache, o Nextcloud 31 e versões mais recentes oferecem occ preview:cleanupessa funcionalidade, conforme descrito no arquivo README do projeto. Isso remove todos os arquivos de pré-visualização gerados, e o Nextcloud cria novas pré-visualizações sob demanda à medida que os usuários acessam os arquivos. Isso pode, temporariamente, causar o retorno dos picos de uso da CPU que você está tentando reduzir. Faça backups quando necessário, agende a limpeza de forma planejada e evite excluir manualmente o diretório de pré-visualização do appdata como parte do ajuste de rotina. O arquivo README do Gerador de Pré-visualização também descreve um .nomediaarquivo para ignorar uma pasta e seus descendentes quando apropriado.
Um símbolo de pasta e um símbolo de arquivo oculto aparecem ao lado de um escudo e um cadeado, ilustrando a limitação da criptografia e a opção de ignorar uma pasta.
Na prática, o Preview Generator é uma boa opção quando pré-visualizações lentas sob demanda criam picos de carga visíveis, você pode agendar tarefas em segundo plano e tem espaço em disco para tamanhos em cache. Combine-o com um limite de concorrência moderado, dimensões de pré-visualização que correspondam às necessidades reais de exibição e uma execução em lote com testes prévios. Se a instância estiver criptografada, gerenciada sem agendamento de shell ou com uso limitado de CPU por motivos não relacionados a solicitações de pré-visualização, investigue essas restrições antes da implantação.