Suporte » Desenvolvendo com WordPress » Problema com desempenho do MySql – Site com 140mil posts

  • Resolvido Angelo Rocha

    (@angelorocha)


    Amigos, preciso de ajuda.

    Possuo um site, que atualmente possui uma base com 2.5GB, 140Mil posts e cerca de 500Mil registros na post_meta. O fato é que a home do site, páginas de categorias e arquivos se tornam extremamente lentas, suponho que seja problema com as queries do WordPress, já fiz vários procedimentos e a lentidão continua:

    Procedimentos realizados no MySql:
    – Otimização do BD;
    – Reparação do BR;
    – Desfragmentação de tabelas;

    No WordPress:
    – Removi todos os plugins, lentidão continua;
    – Reinstalação do WordPress;
    – Reparo e Otimização através de recurso proprio do WordPress;

    No Servidor:
    – Ativação do OpCache;
    – Utilização do mod expires, headers, gzip, deflate etc;
    – Aumento da memoria do PHP para 2GB;

    Verifiquei o banco e o mesmo não apresenta sobrecarga de dados, atualmente uso um servidor dedicado, 16GB de RAM, 4Cores 4 Threads e rede 100MB. Possuo outros sites nesse servidor, porem menores, e funcionam normalmente e bem. O que posso fazer para resolver este problema?

    Obrigado.

Visualizando 9 respostas - 1 até 9 (de um total de 9)
  • Moderador Allyson Souza

    (@allysonsouza)

    Olá @angelorocha,

    Acredito que você possa tentar fazer um load balancing, já que o gargalo da performance do seu sistema parece ser o banco de dados. Infelizmente nunca fiz e não possuo tal conhecimento para explicá-lo, mas a Digital Ocean tem um artigo muito bem explicado: https://www.digitalocean.com/community/tutorials/how-to-optimize-wordpress-performance-with-mysql-replication-on-ubuntu-14-04

    Espero que ajude!

    Pode ser que você consiga otimizar bastante o site melhorando o código do tema e/ou plugins, muitas vezes queries são feitas de forma “irresponsável” e acaba denegrindo a performance, mas fica difícil dizer se há melhorias sem auditar os plugins e temas utilizados. Porém uma coisa é certa, chega a um ponto você precisa implementar alguma camada de cache. Você está utilizando alguma solução de cache? Recomendo a utilização de no mínimo o plugin Batcache (é o único plugin de cache que recomendo). No entanto, soluções ideais de cache em sites com alto tráfego e com grande base de dados incluem um front-end cache mais robusto utilizando Nginx ou Varnish por exemplo.

    Uma coisa que notei e vi que você não fez foi uma limpeza na tabela wp_options, essa tabela pode ser a culpada de toda essa lentidão quando ela se torna muito grande e quando a maioria de seus registros estão com a coluna ‘autoload’ setada como true. Isso faz com que em todas as páginas, todos os registros configurados como autoload sejam carregados. Imagine por exemplo que existem 2MB de dados na wp_options configurados como autoload, isso significa que 2MB de dados estarão sendo carregados toda vez que uma página for carregada, isso se tornaria um grande gargalo. Recomendo verificar o tamanho da wp_options, o ideal é ter algo em torno de 1MB.

    Link para referência:
    https://pressjitsu.com/blog/optimizing-wp-options-for-speed/

    Recomendo fazer um backup antes de fazer qualquer alteração na wp_options.

    Moderador Rahmohn

    (@rahmohn)

    Olá, @angelorocha.

    No codex tem uma página só sobre otimização do WordPress: WordPress Optimization. Acho que é uma boa fonte de pesquisa.

    Emr relação ao banco de dados, tem o plugin Query Monitor que te ajuda a ver quais queries estão lentas, duplicadas, etc.

    De qualquer forma, você vai precisar passar um “pente fino” no seu site para saber o que realmente está causando o gargalo.

    Amigos, obrigado pelas respostas concisas.

    Allyson, já havia lido sobre balanceamento, achei a solução demasiadamente complexa diante do meu conhecimento de infra, contudo não é impossível de fazer, sou um buscador de conhecimento, sei que se parar para ler um pouco consigo fazer isso, contudo, tenho medo de estar usando uma bazuca para matar uma barata, hehe… Essa será minha solução tipo, quebre o vidro. Vi que no wordpress tem um plugin da própria automatic para fazer isso, mas será minha última alternativa.

    Nocholas, mudando o tema, fica melhor, na verdade, muito melhor, e sim, notei isso a algum tempo e havia desenvolvido um tema sem muitas firulas, porem, no momento preciso de algo muito melhor. Atualmente tenho dois portais, grandes, esse que estou tendo problemas é o maior, o segundo tem 40mil posts, e está bem, ambos usam o mesmo tema. Achei pertinente sua observação a respeito da tabela options, uma outra observação, a lentidão se dá principalmente na página inicial, quando defino uma página estática como página inicial, isso quer dizer algo?

    Como faço para ver as opções nocivas da tabela wp_options? Tem como otimizar as consultas na tabela wp_posts? A nível de aplicação ou banco?

    Sobre o cache, tenho um problema com todos os plugins de cache que usei, e o problema é com relação as tags condicionais do WordPress, eles ignoram, por exemplo, funções “is_singular, wp_is_mobile” etc…

    Obrigado pela atenção desde já.

    Moderador Allyson Souza

    (@allysonsouza)

    Olá @angelorocha,

    Sugeri o load balancing pois achei que você já tinha testado de tudo e estava com cache implementado. Não sei se há algum porém mais específico sobre definir home como página estática, mas talvez fosse bom dar uma olhada no código contido no template que exibe a página, se tem algo que pode estar consumindo muito, fazendo muitas requisições ao banco.

    Sobre cache, no W3 Total Cache pelo menos você pode definir fragmentos de código que não são ‘cacheados’, este artigo fala como: https://1fix.io/blog/2015/02/22/page-fragment-caching-w3-total-cache/

    Rahmohn,

    o que tem la na documentação do WordPress sobre otimização é bem básico, sobre o Query Monitor, o testei já, gargalo nas consultas de posts.

    Encontrei o problema, é uma consulta que trás posts populares, onde ela busca tanto na post quanto na post meta, e isso por algum motivo está deixando o site lento, onde o widget estava habilitado. Descobri isso por eliminação mesmo =(

    Buscas por posts populares geralmente é bem pesada mesmo, no mínimo precisa ser cacheada. Para posts relacionados procure soluções como Jetpack e para integrações mais robusta algo como ElasticSearch para consultas mais rápidas e relevantes.

Visualizando 9 respostas - 1 até 9 (de um total de 9)
  • O tópico ‘Problema com desempenho do MySql – Site com 140mil posts’ está fechado para novas respostas.