WPML

Nos últimos meses, sentimos que o nosso próprio site – wpml.org – estava ficando lento. Primeiro, adotamos a abordagem drástica de fazer o upgrade do servidor. Quando isso não ajudou, nos concentramos e realmente analisamos o problema. O resultado é a versão de hoje, que reduziu nossa carga de CPU e tempo de resposta em 70%.

O que aprendemos sobre análise de desempenho


O desempenho também tem sido muito importante para nós. Temos testado a memória, as consultas e o tempo de CPU do WPML há anos e o melhorado a cada versão. O que aprendemos com esta rodada de desenvolvimento é que testes estáticos nem sempre revelam os problemas reais.

O método que usávamos até agora para testar o desempenho era:

  • Criar um banco de dados grande com muitos posts, postmeta, categorias e usuários
  • Produzir uma lista das páginas mais “pesadas”
  • Carregá-las muitas vezes, medir o tempo que leva para carregar e analisar o perfil

Isso nos mostrou as páginas do front-end e do painel de administração que precisávamos depurar e otimizar. Nos certificamos de reduzir o número de consultas, evitar consultas longas e escrever código PHP eficiente.

Então, o que está faltando?

O WordPress e o WPML são um pouco mais complexos do que “solicitar uma página e esperar que ela carregue”. Tudo acontece através do banco de dados, que é um recurso compartilhado. Uma coisa que o visitante A faz com o banco de dados pode afetar a experiência que o visitante B está recebendo.

Para entender esses gargalos, instalamos uma ferramenta chamada Appoptics em nosso site de produção. Ela nos permitiu medir quais funções e consultas tomam tempo, para que pudéssemos analisar o motivo.

A verdadeira melhoria de desempenho


Descobrimos que uma operação aparentemente inofensiva na Tradução de Strings tinha um conflito de recursos significativo com uma consulta frequente à tabela de opções de outro plugin. Se você executar essa chamada apenas 1 milhão de vezes, não sentirá nenhum problema. No entanto, quando outras páginas precisam acessar a tabela de opções, elas têm que esperar até que as strings não a estejam acessando. A lista de solicitações pendentes cresce, sobrecarrega o banco de dados e tudo vira um caos.
Melhoria de desempenho para o wpml.org

Olhando para o gráfico, você pode ver que a maior parte do esforço do nosso servidor foi para o banco de dados (aquela tabela que ficava bloqueando e desbloqueando). Você provavelmente consegue adivinhar a que horas aplicamos a correção.

Mas eu tenho outros problemas de desempenho, vocês podem corrigi-los?


O que detectamos definitivamente ajudará não apenas o wpml.org, mas muitos outros sites movimentados que executam o WPML. Se você tiver um site com uma carga muito pequena, quase não sentirá essa melhoria. Ela afeta apenas sites com muita simultaneidade e pessoas fazendo muitas coisas diferentes.

É possível que outros sites possam usar outras otimizações de desempenho. Agora aprendemos que a melhor maneira de fazer esse trabalho é instalando a análise de perfil no site de produção real, que sofre com o mau desempenho. Mesmo se recebermos uma cópia do seu banco de dados, não podemos simular o seu tráfego. É por isso que todas as nossas rodadas anteriores não detectaram esse problema específico.

A propósito, nossa rodada de melhoria de desempenho não revelou gargalos apenas no WPML. Corrigimos o que encontramos no WPML, mas notamos problemas drásticos em outros lugares. Alguns, nós mesmos corrigimos e outros otimizamos através do banco de dados.

Se você estiver interessado, avise-nos e ajudaremos você a instalar a análise de desempenho em seus sites de produção. Depois, ficaremos muito felizes em ajudar você a analisar os resultados. Se encontrarmos algo no WPML, nós corrigiremos. Há uma boa chance de que sites com problemas de desempenho encontrem vários problemas vindos de fontes surpreendentes.

O que mais há de novo no WPML 4.2.6

Núcleo do WPML 4.2.6

  • Adicionado o filtro wpml_post_edit_meta_box_priority para alterar a prioridade da meta box de edição de post do WPML
  • Corrigido o problema com o upgrade de plugins em caso de instalações em subpastas – usando sempre as URLs do site
  • Salvar os avisos apenas quando necessário para reduzir gravações extras na tabela wp_options
  • Corrigido um problema de segurança com os links do seletor de idiomas

WPML Tradução de Strings 2.10.4

  • Corrigido um problema com a importação de arquivo mo do ST para que a tabela wp_option não seja atualizada desnecessariamente

WPML Gerenciamento de tradução 2.8.5

  • Melhorado o estilo dos controles de paginação na página Trabalhos de tradução
  • Corrigido um problema com a atribuição de tradutores na página Trabalhos de tradução quando o idioma do painel de administração é diferente do inglês
  • Corrigido o conteúdo impróprio da coluna “Traduzido por” quando o idioma do painel de administração é diferente do inglês

WPML Media Translation 2.5.2

  • Salvar os avisos apenas quando necessário para reduzir gravações extras na tabela wp_options

WPML CMS Nav 1.5.1

  • Melhorado o desempenho limpando o cache apenas quando aplicável

Download e atualização


Como sempre, você receberá esta atualização automaticamente para todos os seus sites registrados. Você sempre pode fazer login na sua conta do WPML para baixar e instalar manualmente.

Recomendamos fazer backups antes de atualizar qualquer coisa no seu site.

Feedback? Perguntas? Sugestões?


Nossos sites estão rodando muito mais rápido agora, mas adoraríamos saber sobre os seus sites. Por favor, deixe seus comentários e nós responderemos a você.

Achou isso útil? Compartilhe este artigo: