Otimizar um servidor Nextcloud: melhorar o desempenho, aumentar o limite de upload e evitar timeouts

Por que você deve otimizar seu servidor Nextcloud

Nextcloud é mais do que uma unidade de rede bonita. Se você usar seu servidor Nextcloud como o hub central para seus arquivos e fluxos de trabalho, você rapidamente percebe como o desempenho e estabilidade são importantes. Grandes uploads falham, downloads atingem o tempo limite, a interface da web parece lenta e prévias de fotos ou vídeos demoram muito para carregar.

Neste artigo, vou mostrar como otimizar seu servidor Nextcloud, melhorar o desempenho, e ajustar os limites típicos como o limite de upload PHP e timeouts. Também olhamos como ativar cronjobs, como personalizar Nextcloud config.php, e quais comandos são realmente importantes quando se trata de manutenção e ajuste.

Os exemplos são baseados em uma configuração com Ubuntu, Apache e PHP 8.3 ou 8.4. Muitas das dicas também se aplicam se você usar PHP-FPM ou Nginx em vez de Apache.

Aumente o limite de upload do PHP e ajuste os timeouts

Para carregar arquivos grandes de forma confiável na Nextcloud, vários parâmetros PHP devem funcionar juntos. Em Ubuntu com Apache e PHP 8.4 você costuma editar:

sudo nano /etc/php/8.4/apache2/php.ini

Configurações importantes para uploads e timeouts:

ConfiguraçãoValor de exemploEfeito
memory_limit1024M ou 2GMáximo de RAM por processo PHP
upload_max_filesize8GTamanho máximo de um único arquivo carregado.
post_max_size8G ou maiorTamanho máximo de todo o requisição POST
max_file_uploads200Quantos arquivos podem ser carregados por requisição
default_socket_timeout900Tempo limite em segundos para fluxos, por exemplo uploads lentos

Algumas regras:

  • post_max_size deve ser pelo menos tão grande quanto upload_max_filesize, idealmente ligeiramente maior.
  • Não exagere com valores absurdos como 256G se seu servidor tem apenas 16GB de RAM e 2 TB de armazenamento. Ajuste os valores para sua configuração.
  • Para arquivos muito grandes o tempo limite é muitas vezes o problema real. Aumente esses valores também:
    • max_execution_time por exemplo 3600
    • max_input_time por exemplo 3600

Exemplo de trecho de um php.ini Arquivo:

memory_limit = 2G
upload_max_filesize = 8G
post_max_size = 8G
max_file_uploads = 200
max_execution_time = 3600
max_input_time = 3600
default_socket_timeout = 900
zlib.output_compression = On
zlib.output_compression_level = 6

O zlib.output_compression A configuração pode ajudar a reduzir o tamanho da resposta, especialmente em conexões mais lentas. Certifique-se de que seu proxy ou servidor não comprima a mesma resposta uma segunda vez.

Se você usar Nginx ou um proxy inverso na frente do Apache, você também tem que ajustar os limites de upload e tempo limite lá, por exemplo:

  • Nginx: client_max_body_size
  • Apache: LimitRequestBody E intervalos de tempo como ProxyTimeout ou RequestReadTimeout

Otimize o desempenho do Nextcloud com APCu e Opcache

O desempenho da Nextcloud melhora muito se você configurar PHP Opcache e um cache local como APCu.

Em seu php.ini ou um dedicado apcu.ini Você pode ativar APCu assim:

apc.enabled=1
apc.shm_segments=1
apc.shm_size=256M
apc.entries_hint=8192

Valores como apc.shm_size=768M De suas anotações estão bem para grandes instalações com muitos usuários. Para um pequeno servidor privado da Nextcloud 128M a 256M geralmente é suficiente.

PHP Opcache armazena scripts compilados em memória para que eles não precisem ser analisados repetidamente:

opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.max_wasted_percentage=10

Em termos simples:

  • opcache.memory_consumption define quanto RAM Opcache pode usar. 128 a 256 MB é um bom ponto de partida para muitos servidores da Nextcloud.
  • opcache.max_accelerated_files controla quantos arquivos PHP podem ser armazenados em cache. Valores entre 10000 e 20000 funcionam bem para configurações típicas da Nextcloud.

Depois de mudar as configurações PHP você deve reiniciar Apache ou PHP-FPM:

sudo systemctl restart apache2
# oder
sudo systemctl restart php8.4-fpm

Ative o Cron e configure tarefas em segundo plano

Nextcloud executa muitas tarefas em segundo plano: gerar pré-visualizações, limpar ações antigas, sincronizar armazenamento externo, atualizar o cache de arquivos e muito mais. Por padrão, isso é executado via AJAX que é fácil de configurar, mas ruim para o desempenho, porque trabalhos só começam quando alguém está ativo no navegador.

É melhor mudar para um sistema Cronjob. Abra as configurações de administração da Nextcloud, vá para “Configurações básicas” e mude “Tarefas em segundo plano” para “Cron”.

Então crie um Cronjob como o www-data usuário:

sudo -u www-data crontab -e

Por exemplo:

*/5 * * * * php --define apc.enable_cli=1 -f /var/www/html/cron.php > /dev/null 2>&1

Agora o Nextcloud Cron é executado a cada 5 minutos, independentemente da atividade do usuário na interface web.

Em suas anotações você também usa trabalhos extras de manutenção com occ files:scan para analisar pastas específicas de usuários ou armazenamento externo. Isso é absolutamente bom, mas tente não fazer varreduras completas muitas vezes. Uma varredura noturna por caminhos críticos geralmente é suficiente, caso contrário você colocará carga desnecessária em seu banco de dados.

Otimize o arquivo config.php do Nextcloud

O arquivo config/config.php controla muitas funções internas da Nextcloud. Em uma instalação padrão você edita assim:

nano /var/www/html/config/config.php

Estas são algumas configurações e suas funções:

'memcache.local' => '\\OC\\Memcache\\APCu',
'preview_max_memory' => 4096,
'versions_retention_obligation' => '5,auto',
'trashbin_retention_obligation' => '5,auto',
'filelocking.enabled' => false,
'check_data_directory_permissions' => false,
'files.chunked_upload.max_size' => 20971520,
'enabledPreviewProviders' => array(
    'OC\\Preview\\PNG',
    'OC\\Preview\\JPEG',
    'OC\\Preview\\GIF',
    'OC\\Preview\\HEIC',
    'OC\\Preview\\BMP',
    'OC\\Preview\\XBitmap',
    'OC\\Preview\\MP3',
    'OC\\Preview\\TXT',
    'OC\\Preview\\MarkDown',
    'OC\\Preview\\OpenDocument',
    'OC\\Preview\\Krita',
    'OC\\Preview\\PDF',
    'OC\\Preview\\SVG',
    'OC\\Preview\\EPS',
    'OC\\Preview\\DOC',
    'OC\\Preview\\DOCX',
    'OC\\Preview\\TIFF',
    'OC\\Preview\\Photoshop',
    'OC\\Preview\\PhotoshopPSB',
    'OC\\Preview\\MP4',
),

Breve resumo:

  • memcache.local com APCu é essencial para o desempenho. Sem ele, Nextcloud vai se sentir muito lento.
  • preview_max_memory limita a RAM usada para gerar pré-visualizações. O padrão é muito menor, 4096 MB é bastante generoso. Ajuste o valor para combinar com seu hardware.
  • versions_retention_obligation e trashbin_retention_obligation Controle quanto tempo versões e conteúdo do lixo são mantidos. Retenção menor economiza espaço em disco, mas reduz as opções de restauração.
  • files.chunked_upload.max_size Afeta o tamanho do pedaço quando carregado. O valor está em bytes. 20971520 é equivalente a 20 MB. Pedaços maiores podem melhorar o desempenho em linhas rápidas, mas são mais sensíveis a conexões instáveis.

Tenha cuidado com:

'filelocking.enabled' => false,
'check_data_directory_permissions' => false,
  • Você só deve desativar. filelocking.enabled Se você realmente sabe o que está fazendo. Uma abordagem melhor é configurar Redis como memcache.locking Para que o acesso simultâneo aos arquivos seja tratado com segurança.
  • check_data_directory_permissions Pronto para false Pode fazer sentido em instalações especiais, mas você também perde uma verificação de segurança que avisa sobre permissões erradas.

Comandos occ importantes para manutenção e desempenho

A ferramenta CLI Nextcloud occ é extremamente útil para tarefas de manutenção e ajuste. Você costuma executar comandos como este:

sudo -u www-data php /var/www/html/occ status

Alguns comandos úteis:

  • occ status
    Mostra informações básicas sobre sua instância Nextcloud.
  • occ db:add-missing-indices
    Adiciona índices de banco de dados faltando e pode acelerar muitas consultas.
  • occ db:convert-filecache-bigint
    Converte colunas no banco de dados para tipos mais adequados para melhor desempenho e estabilidade.
  • occ files:scan --all ou com --path
    Verifica novamente o sistema de arquivos e atualiza o cache de arquivos. Muito útil se os arquivos aparecerem no disco, mas não na Nextcloud. Não faça exames completos a cada hora, isso sobrecarrega o banco de dados.
  • occ preview:pre-generate
    Juntamente com o aplicativo Gerador de Visualização você pode pré-gerar pré-visualizações à noite para que os usuários vejam imagens e PDFs muito mais rápido na interface web.

Não se esqueça do banco de dados, armazenamento e rede

Se você realmente quer otimizar seu servidor Nextcloud, você também deve olhar além do PHP e arquivos de configuração.

  1. Otimização do banco de dados
    • Se possível, use MariaDB ou PostgreSQL.
    • Certifique-se que o buffer seja grande o suficiente, por exemplo:
      • MariaDB: innodb_buffer_pool_size para pequenos servidores com 1 a 2 GB.
    • Faça backups regulares e verifique os registros para consultas lentas.
  2. Sistema de armazenamento e arquivos
    • SSD ou NVMe trazem um aumento significativo de desempenho comparado aos HDDs antigos.
    • Para muitos arquivos pequenos, vale a pena dar uma olhada no sistema de arquivos e as opções de montagem.
    • Armazenamento externo (SMB, NFS) é conveniente, mas muitas vezes mais lento do que o armazenamento local.
  3. Rede e Proxy Reverso
    • Certifique-se que sua linha de internet tenha velocidade de upload suficiente, especialmente para arquivos grandes.
    • Verifique os timeouts e limites do corpo da requisição no proxy inverso (Nginx, Traefik, Apache Proxy).
    • Ative HTTP/2 ou HTTP/3 se a sua configuração suportar para processar muitas solicitações pequenas de forma mais eficiente.

Este artigo foi traduzido com a ajuda de IA.

Durchschnittliche Bewertung 0 / 5. Bewertungen: 0

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima