Tainacan muito lento para mostrar itens no admin e executar Edição em Massa

Oi pessoal. Eu de novo com problemas mais complexos >.<

No meu cliente, estamos com um problema muito estranho de performance.

Há 1 ano ±, tudo era rápido. Raras as vezes que ficava lento. Lento para listar itens no admin do Tainacan, por exemplo.

Há alguns meses, o site passou a ser lento na maior parte do tempo. Edições em Massa, que antes era instantâneas (assim que fechava a tela, a edição tinha terminado), agora demora minutos para processas 3 itens simples.

Analisando a máquina e o servidor onde ela está, não há qualquer indício de lentidão ou gargalo. CPU, memória e carga muito abaixo dos limites (0.5 de load foi o máximo que vi).

Uma única suspeita é que existem 2 PDFs muito grandes que demoram para serem processados quando salvos (inclusive foi a origem de uma mudança que vcs fizeram há pouco tempo para não reprocessar o arquivo toda vez, mas que eu ainda não pude testar)

Vocês sabem o que pode causar esse comportamento? O tamanho do acervo não cresceu tanto, mas temos esses PDFs e outros que foram adicionados desde quando funcionavam bem.

Vocês têm como me dizer o caminho que é feito (tipo um fluxograma ou sequência de ações) nessas duas situações para que o pessoal de infra do cliente possa analisar mais profundamente o caso?

  1. Quando uma pesquisa é feita no admin do tainacan usando um texto e também um filtro.

  2. Quando uma edição em massa é feita (eu tenho testado selecionando 3 itens e trocando um metadado de texto longo)

Me ocorreu agora uma suspeita que pode estar relacionada.

Esses PDFs lentos foram incluídos depois de quando tudo era rápido. Se na pesquisa por itens (situação 1 acima), eles tiverem de ser pesquisados também (usamos pesquisa dentro dos PDFs), imagino o resultado acabe demorando mais, certo? Ou será que o conteúdo deles é guardado em algum lugar mais rápido de pesquisar?

Ainda nessa linha, pensando no processo de edição em massa, será que acontece uma pesquisa também nesses PDFs, mesmo eles não sendo parte dos itens selecionados?

São wild guesses, mas vai quê :stuck_out_tongue:

Muito obrigado,

Pensando aqui, será que esse “reprocessamento dos PDFs” poderia estar causando esse comportamento na edição em massa? Os itens que tenho testado são PDFs com OCR e estou na versão em que esse reprocessamento não foi resolvido.

Pela minha experiência, a resposta do Tainacan tem muito a ver com o tema do WordPress com o qual interage? Houve alguma mudança nesse sentido?

Oi marvila, Você tentou otimizar o wordpress? principalmente o banco de dados.

Eu uso WP-Optimize, faz um otimo trabalho

Obrigado pela ideia, @miramontes No caso o tema é o Blocksy. Tema e outros plugins sempre foram os mesmos, apenas atualizando versões.

Até o momento, não me parece ser algo nesse sentido :confused:

Essa é uma hipótese que estamos analisando.

Como a entrada de novos itens é pequena, as chances podem ser pequenas de que alguma coisa no banco esteja afetando. Ainda mais que tudo só acontece no admin do tainacan e temos basicamente uma única pessoa usando o site.

Mas é o próximo passo. Otimizar as configurações do banco de dados e limpar as revisões (não sei se tainacan usa elas, mas sabendo que usam os posts do WordPress, pode ser que esteja habilitado).

E, depois, testar com a nova versão.

só que mesmo assim, olhando o timing do processamento em lote, cada etapa leva 5s em média pra aparecer no log em vez de ser tipo várias no mesmo segundo se o processo fosse bem rápido.

Toda vez que eu tenho algum problema, a primeira etapa é a otimizacão do banco de dados e limpeza do cache… geralmente resolve

@marvila boa tarde, consegue fazer uma consulta na base para ver como tá a quantidade de registros na wp_posts e na wp_meta?

O principal problema de eficiência no Tainacan é quando se tem muitos registros de logs de alteração, acaba deixando as busca pesadas.

É onde eu to indo agora. Mas eu precisei resolver outro problema no ambiente antes de chegar lá.

São 107K registros no WP_POSTS, sendo 11k de revisões, mas o que eu achei muito estranho é a quantidade de post_meta. Se bem que se forem 8 metas para cada post, tá dentro da quantidade. E a cliente certamente tem mais que 8 metas no total.

image

Mas o mais estranho é que a quantidade de itens é pequena (2643) segundo o Tainacan.

image

Definitivamente eu não criei 100k páginas ou posts no site (devem haver nem 100 no total).

Alguma ideia da razão de estar tão grande?

O Tainacan gera revisões?

É preciso deixar revisões habilitadas para o Tainacan? Não lembro de ter visto uma maneira de voltar uma revisão dentro do Tainacan.

Obrigado pessoal pela ajuda até agora :slight_smile:

Até,

Colega

quando trabalho em uma coleção, principalente usando muitas operações em lote

em algum momento dou uma limpada na instalação, já tentei otimizações, etc.

o que melhor funciona para diminuir o bd Efetivamente

é exportar e impoortar tudo novamente em uma instalação limpa…

é assim que procedo !

Obrigado, Sérgio.

Isso passou pela minha cabeça quando vi o tamanho do banco, e obrigado por confirmar que é uma solução possível.

Mas ela está longe de ser a solução ideal. Ter de refazer toda a coleção, exportando e importando não é algo que eu gostaria de fazer (ou que seja esperado fazer com frequência), exceto em momentos críticos. Imagino o tanto de problema que pode acontecer no momento da exportação e importação e que podem passar despercebidos.

Outra questão é que por aqui também está mega lenta a exportação e importação. 96 itens levaram 1h na edição em massa. Imagina exportar 300x isso >.<

Estou trabalhando em outras tarefas desse projeto antes de voltar a analisar a razão do banco ter crescido tanto e de estar tão lento (se é que essa é a causa mesmo).

Se alguém souber por que o banco cresce tanto assim com o tainacan eu agradeço :slight_smile:

Tive uma evolução nesse caso.

Estou testando a otimização do banco de dados, mas que vai além da limpeza de revisões. A ideia é melhorar os índices do banco de dados do WP.

Fiz isso num blog e funcionou muito bem. A hipótese é a de que o Tainacan, usando as tabelas de posts do wordpress, também se aproveite dessa melhora.

Estou testando ainda, mas o prognóstico é promissor :slight_smile:

@marvila o maior vilão serão os logs, porque eles não estão guardados como revisões, mas como wp_posts do tipo tainacan-logs. Por issto esta issue aqui é uma das que está no nosso radar pro ano que vem:

Pelo monitor de queries no meu ambiente local, a query mais longa era essa:

1 min em prod, e 6s no ambiente local.

Depois de alterar os índices, essa query passou a executar em 3 milisegundos (em vez de 6s). E nenhuma query além de 1s.

Estou fazendo o backup do ambiente de PROD pra testar essa mudança de índices por lá também.

Interessante isso, né @vnmedeiros ?

Oi, Mateus.

Olhando aqui, são 71k de logs, 9k de revisões e 84k no total (3k de itens de coleção).

image

A conta bate, mesmo.

mas o problema me parece mais no post_meta que tem mais de 800k de entradas pra 3k itens e 9k revisões.

Uhm, veja quantos destes post_meta estão vinculados a posts to tipo tainacan-logs?

Só 644K post metas!

Hehhehe tá aí o culpado… se não me engano são uns 9 post_metas vinculados aos logs (onde ficam de fato guardadas as diffs, as datas de alteração, etc). E é isso, essa coisa dos logs como post type não fazem sentido algum, não me pergunte pq essa decisão foi tomada lá atrás mas é horrível… Nós vamos dar um jeito nisso no futuro, é um dos maiores débitos técnicos que o plugin tem.

1 curtida

Confirmado que melhorou muito em PROD :slight_smile:

Só mudando os índices!

Em ambos os casos eu estava alterando um metadado de texto longo de apenas 3 itens da coleção:

De 1 minuto

Para 15ms

Depois fiz o mesmo, só que para 96 itens e o tempo total, que da última vez tinha sido mais de 45 minutos ficou em menos de 2 min.

A única coisa que fiz foi instalar o plugin “Index WP MySQL For Speed” e pedir para ele criar os índices nas tabelas. O monitoramento foi feito por ele tb.

Essa é uma ação que pode dar muito errado, portanto não esqueçam de fazer backup.

Por aqui, para o Tainacan funcionou bem e para blogs com muitos posts também funciona bem :slight_smile:

Espero que ajude outras pessoas também.