Acelere as consultas do ownCloud 10 gerenciando índices com segurança.

Para o ownCloud 10, comece aplicando as alterações de esquema fornecidas pelo núcleo e pelos aplicativos instalados e, em seguida, verifique quais consultas ao banco de dados estão realmente lentas. Não adicione índices indiscriminadamente nem assuma que o comando Nextcloud db:add-missing-indicesseja um comando de reparo compatível com o ownCloud 10: a referência atual do ownCloud Server 10.15 OCC não o documenta. Os índices podem acelerar as leituras correspondentes, mas cada índice adicionado consome armazenamento e aumenta o trabalho de inserções, atualizações e exclusões.

Essa abordagem é adequada para um administrador que tenha uma página do ownCloud lenta, uma listagem de arquivos lenta ou uma operação de aplicativo lenta e que consiga acessar o servidor e o banco de dados. Se toda a instância estiver lenta ou se estiver sendo executada em SQLite com vários usuários ativos, verifique o banco de dados e a configuração de implantação de forma geral antes de considerar os índices como a causa do problema.

Escolha a alteração que corresponde às evidências.

Um índice de banco de dados é uma estrutura auxiliar que ajuda o banco de dados a localizar linhas sem precisar percorrer a tabela inteira. O ownCloud e seus aplicativos definem tabelas, colunas e índices como parte de seu esquema. Atualizações do núcleo e dos aplicativos podem incluir migrações de esquema que criam ou ajustam esses índices. Portanto, manter o esquema do aplicativo atualizado é a primeira medida mais segura.

Utilize as seguintes distinções antes de alterar qualquer coisa:

  • Aviso do administrador ou problema conhecido de atualização: execute o procedimento normal de atualização do ownCloud e revise o resultado. As migrações de atualização são o caminho recomendado para alterações de esquema fornecidas pelo ownCloud ou por um aplicativo.
  • Uma consulta lenta conhecida com um plano de execução ineficiente: peça a um administrador de banco de dados para inspecionar a consulta e o plano. Um índice direcionado pode ajudar, mas as colunas e a ordem propostas devem corresponder à consulta e à definição da tabela.
  • Carregamentos lentos, bloqueios ou muita contenção: investigue transações, latência de armazenamento, capacidade do banco de dados e bloqueio de arquivos. Esses sintomas, por si só, não comprovam a ausência de um índice.
  • Instalação pequena do SQLite que se torna multiusuário: considere migrar para MySQL/MariaDB ou PostgreSQL. O ownCloud descreve o SQLite como adequado para testes e pequenas cargas de trabalho de usuário único, enquanto implantações de produção multiusuário devem usar um banco de dados de servidor compatível.

Um índice não é um fator determinante para a velocidade geral do banco de dados. Mais índices podem melhorar determinadas consultas, porém aumentam o tamanho do banco de dados e a latência de gravação. O resultado depende do formato da consulta, do tamanho da tabela, da distribuição dos dados, do mecanismo do banco de dados e do estado do cache.

Prepare uma janela de manutenção segura.

  1. Anote as versões exatas e o banco de dados. No diretório de instalação do ownCloud, execute o comando sudo -u www-data ./occ status. Observe a versão do ownCloud, as versões dos aplicativos instalados, o tipo de banco de dados e o prefixo da tabela config/config.php. Substitua ` www-data<conta do servidor web>` pela conta do servidor web na sua distribuição.
  2. Capture a operação lenta. Anote a tela ou aplicativo afetado, o horário aproximado e se o atraso se repete. Analise os logs do ownCloud e os diagnósticos de consultas lentas do seu banco de dados. Habilite o registro de consultas somente de acordo com as orientações do fornecedor do seu banco de dados, pois os logs podem conter valores SQL confidenciais e crescer rapidamente.
  3. Faça backup do banco de dados e da configuração. Use um método de backup consistente com o banco de dados e confirme se o backup é legível. A documentação de backup do ownCloud usa mysqldump --single-transactioncomo exemplo bancos de dados compatíveis com MySQL; adapte os valores de host, usuário e banco de dados à sua configuração. Não insira a senha do banco de dados diretamente no histórico do shell ou na lista de processos.
  4. Faça alterações de forma responsável. Uma atualização de esquema ou criação de índice pode usar E/S de disco, CPU e bloqueios. Para instalações grandes ou com alta demanda, informe os usuários sobre o período de execução e monitore a carga do banco de dados. Use o modo de manutenção do ownCloud somente quando o procedimento de atualização ou manutenção aplicável exigir; não o habilite como substituto para um backup.

Aplique primeiro as atualizações de esquema gerenciadas pelo ownCloud.

Se houver uma atualização pendente do núcleo ou do aplicativo ownCloud, use o processo de atualização documentado para o seu método de instalação. Em uma instalação Linux convencional, o comando OCC é executado como o usuário HTTP a partir do diretório raiz do ownCloud. Ao seguir as instruções de atualização manual, o comando é:

sudo -u www-data ./occ upgrade

Não execute o programa em uma instalação cujos arquivos foram atualizados apenas parcialmente. Primeiro, prepare os arquivos da versão correspondente e siga os passos oficiais de atualização para essa versão. Para implantações em Docker, use a invocação OCC documentada do contêiner, em vez de um caminho de host que aponte para um ambiente PHP diferente.

Leia a saída completa do comando e os registros. Um comando bem-sucedido deve terminar sem relatar falhas na migração; isso não garante que todas as consultas lentas sejam corrigidas. Se a atualização relatar um erro de migração, interrompa e investigue esse erro em vez de executar o comando repetidamente ou editar as tabelas do esquema manualmente. Consulte a documentação de atualização do ownCloud específica da versão e o mantenedor do aplicativo quando houver uma migração de aplicativo envolvida.

A documentação de referência do ownCloud 10.15 OCC lista comandos de banco de dados como db:convert-type`db.get`, db:convert-mysql-charset`db.get` e db:restore-default-row-format`db.get`, mas não lista ` db:add-missing-indicesdb.get`. Como a disponibilidade de comandos pode variar de acordo com a versão e o código instalado, você pode inspecionar sua própria instância com ` npm run build` sudo -u www-data ./occ list dbou ` sudo -u www-data ./occ help db:add-missing-indicesnpm run build`. Se este último reportar um comando desconhecido, não copie o comando de um tutorial do Nextcloud para o ownCloud. Consulte a documentação da sua versão específica do ownCloud e use o caminho de atualização ou migração de aplicativo compatível.

Quando é apropriado um índice manual?

O SQL manual é uma opção para administradores de banco de dados em casos de problemas de consulta comprovados, e não uma otimização de rotina do ownCloud. Primeiro, capture a consulta lenta exata e execute a ferramenta de inspeção de planos do mecanismo, como EXPLAINpara MySQL/MariaDB ou PostgreSQL. Confirme se o plano examina um número desnecessariamente grande de linhas e se um índice existente está sendo ignorado. O prefixo da tabela ownCloud é configurável, portanto, nunca assuma que os nomes das tabelas começam com ` oc_.`.

Antes de criar um índice, compare as colunas propostas com os filtros, junções e ordem de classificação da consulta. A ordem das colunas em um índice composto é importante; duplicar um índice existente pode aumentar o custo sem melhorar o plano. Peça a um DBA para considerar o comportamento da versão do banco de dados, o suporte à criação de índices online ou simultâneos, o espaço livre em disco, o impacto de bloqueios e o procedimento de reversão. Esses detalhes são específicos do mecanismo e da versão, portanto, não existe uma única instrução SQL segura para todas as instalações do ownCloud 10.

Não altere tabelas do ownCloud nem remova índices apenas porque um nome parece redundante. Essas alterações podem entrar em conflito com uma migração posterior do núcleo ou do aplicativo e podem quebrar um recurso que usa uma consulta diferente daquela que você inspecionou. Mantenha um registro escrito de qualquer alteração manual de esquema e certifique-se de que ela possa ser recriada após a restauração ou migração. Dê preferência a um patch ou versão de aplicativo do ownCloud com suporte quando o índice ausente for um defeito do esquema do produto.

Comparar alternativas em nível de banco de dados

Se o plano já utiliza um índice apropriado, adicionar outro provavelmente não resolverá um atraso causado em outro lugar. Compare essas opções com o gargalo observado:

  • MySQL ou MariaDB: uma opção comum para implantações cujos administradores já utilizam esses mecanismos. Analise a memória do buffer pool, a latência do disco, as conexões e os planos de consulta lentos antes de alterar as configurações do servidor.
  • PostgreSQL: uma alternativa suportada para o ownCloud 10, desde que o conector de banco de dados PHP e a implantação estejam configurados corretamente. Seus planos de consulta e ferramentas de manutenção de índices diferem do MySQL, portanto, utilize as recomendações específicas para PostgreSQL.
  • SQLite: simples de operar para testes ou uso individual em pequena escala, mas não é a escolha padrão para cargas de trabalho de produção simultâneas e com múltiplos usuários. O ajuste de índices não elimina as limitações de simultaneidade da implementação.

A mudança de mecanismos de banco de dados é um projeto de migração, não um simples ajuste de índice. O ownCloud oferece occ db:convert-typesuporte para conversões; revise os pré-requisitos, faça um backup primeiro e teste a instância convertida antes de direcionar os usuários para ela.

Verifique o resultado e pare se as evidências forem contrárias.

Repita a mesma ação do usuário em condições comparáveis ​​e compare a duração da consulta, o plano de execução, as linhas examinadas, a E/S do banco de dados e a carga do servidor. Confirme se a página ou o aplicativo ownCloud relevante é concluído normalmente e se os registros não mostram erros de banco de dados ou de migração. Um resultado mais rápido em uma solicitação não comprova uma melhoria geral; compare várias solicitações representativas e leve em consideração os caches quentes.

Se a mesma consulta continuar lenta mesmo usando um índice apropriado, investigue bloqueios, armazenamento, latência de rede, processos PHP e limites de recursos do banco de dados. Se o plano de consulta ou a estrutura da tabela não estiverem claros, pare antes de executar DDL manualmente e peça a um DBA ou contato de suporte do ownCloud para revisar. O resultado esperado é um esquema alinhado com a versão do ownCloud instalada e com as consultas medidas, sem alterações de índice não rastreadas.

Referências oficiais

Deixar um comentário

Limpar o aviso do arquivo .htaccess do Apache ownCloud com segurança

Limpar o aviso do arquivo .htaccess do Apache ownCloud com segurança

Defina AllowOverride All apenas para a raiz da web do ownCloud, valide o vhost ativo do Apache e recarregue com segurança para restaurar as regras do .htaccess.

Configure a auditoria do ownCloud Enterprise e verifique os registros.

Ative o aplicativo Enterprise Auditing do ownCloud, direcione os eventos admin_audit para um arquivo de log protegido e confirme se as ações reais do usuário estão sendo registradas.

Conecte o ownCloud Infinite Scale ao Keycloak com OIDC.

Conecte o ownCloud Infinite Scale ao Keycloak com OIDC.

Alinhe as declarações do emissor de domínio, do cliente web e do usuário do Keycloak para permitir que o ownCloud Infinite Scale faça login de usuários de forma confiável nos clientes web e móveis.

Transfira arquivos do ownCloud para um novo proprietário sem perder o compartilhamento.

Transfira arquivos próprios e compartilhamentos de saída com o comando occ do ownCloud, entenda o que permanece nos arquivos salvos e verifique o acesso antes de excluir a conta antiga.

Acelere as consultas do ownCloud 10 gerenciando índices com segurança.

Saiba quando os índices do banco de dados ownCloud 10 precisam de atenção, como aplicar atualizações de esquema compatíveis com segurança e quando o ajuste de consultas ou uma alteração no banco de dados é a melhor solução.

Montar um compartilhamento SMB/CIFS no ownCloud sem um ponto de montagem Linux.

Conecte um compartilhamento de rede Windows ou Samba ao ownCloud por meio de armazenamento externo, verifique credenciais e solucione problemas de pastas inacessíveis com segurança.

Limpe com segurança as versões de arquivos do ownCloud usando o comando occ.

Limpe com segurança as versões de arquivos do ownCloud usando o comando occ.

Remova todas as versões de arquivos do ownCloud Server Classic armazenadas para uma conta ou para todos os usuários e diferencie uma exclusão completa da expiração baseada em retenção.

Conexão móvel do ownCloud recusada? Verifique o URL e a acessibilidade.

Conexão móvel do ownCloud recusada? Verifique o URL e a acessibilidade.

Rastreie uma recusa de conexão móvel do ownCloud verificando o URL do servidor, a rede do celular, o endpoint HTTPS e os logs do servidor na ordem correta.

Execute tarefas em segundo plano do ownCloud de forma confiável com um temporizador do Systemd.

Substitua a execução de tarefas sob demanda por um temporizador systemd que execute o comando occ system:cron compatível com o ownCloud a cada 15 minutos.

Restaurar a sincronização WebDAV do ownCloud encontrando a rota interrompida.

Rastreie a solicitação WebDAV através do Apache, Nginx ou um proxy reverso e, em seguida, confirme se a sincronização do ownCloud funciona com um teste PROPFIND autenticado.