O New Relic APM é uma ferramenta poderosa que penetra no funcionamento interno de um site WordPress para identificar plugins, arquivos de modelos de temas, consultas a bancos de dados, chamadas externas ou erros de codificação que causam problemas de desempenho em seus sites.

Na Kinsta, nossos clientes são livres para adicionar sua própria licença New Relic para que possam desfrutar da poderosa visibilidade que esta ferramenta proporciona.

Se o provedor de hospedagem não oferecer a integração New Relic, você mesmo poderá configurá-la se o seu site for hospedado em um ambiente privado auto-gerenciado.

Entretanto, colocar o New Relic em funcionamento é apenas o começo. Se você nunca usou o New Relic APM (e talvez até mesmo se você já usou), você pode ter dificuldades para obter o máximo desta poderosa ferramenta. Neste tutorial, mostraremos a você como usar o New Relic APM para diagnosticar e corrigir problemas de desempenho em seu site WordPress.

Pronto para ficar nerd? Vamos começar!

Uma Rápida Visão Geral do New Relic APM

New Relic APM
New Relic APM

Então, o que é o New Relic APM? Para nossos propósitos, a seguinte definição se encaixa:

New Relic APM é uma aplicação web que oferece informações detalhadas sobre o desempenho do seu site WordPress.

Você instala o New Relic ao adicionar uma extensão ao PHP. Essa extensão recebe cada solicitação processada pelo PHP e envia tais informações para o painel New Relic. Em seguida, ele as organiza em uma série de tabelas e gráficos que você pode usar para diagnosticar o problema de desempenho em seu website. É importante destacar que o New Relic não é suportado no HHVM.

Vamos fazer um tour rápido pelas visualizações de dados primários no New Relic.

Visão Geral

Visão geral do New Relic APM
Visão geral do New Relic APM

A visão geral oferece um panorama rápido do desempenho geral de seu website. Você não fará diagnósticos de problemas específicos nesta tela, mas esta compilação prática que exibe como PHP, MySQL e chamadas externas estão trabalhando juntos pode orientá-lo para a direção correta.

Saiba mais sobre a página de visão geral do APM.

Transações

Aba de transações do New Relic
Aba de transações do New Relic

A aba de transações é a mais útil no New Relic.

Aprenda a lidar com a aba de transações e você será capaz de ter detalhes sobre transações lentas para identificar gargalos de chamadas de banco de dados, recursos externos ou códigos que estejam atrasando seu site. É particularmente interessante observar a lista de transações lentas nesta visão. Para ver a lista, role a página para baixo na aba de transações e observe a porção inferior do lado direito.

Rastreamentos de transações no New Relic
Rastreamentos de transações no New Relic

Aqui você encontrará uma lista das transações mais lentas capturadas pelo New Relic. Não vamos gastar muito tempo nessa seção neste momento, mas um pouco mais adiante explicaremos como usá-la para diagnosticar os infortúnios do seu website.

Saiba mais sobre a página de transações do New Relic APM.

Ganchos no WordPress

Ganchos no WordPress
Ganchos no WordPress

A aba de ganchos no WordPress proporciona uma visão do tempo consumido por todas as funções PHP ativadas através dos ganchos de ação do WordPress. Estas informações podem ser úteis para desenvolvedores experientes, que são capazes de usá-las para fazer o caminho reverso de um gancho sobrecarregado, identificando assim as funções que são disparadas pelo gancho.

Plugins e Temas WordPress

Plugins e temas WordPress
Plugins e temas WordPress

A aba plugins WordPress e temas mostra quanto tempo de processamento PHP os plugins e o tema ativo estão consumindo. Se um único plugin ou tema de seu site estiver consumindo uma quantidade de tempo dramaticamente maior, esta página pode ajudá-lo a identificar rapidamente o plugin ou tema que está causando o problema.

Uma palavra de cautela neste aspecto: A aba de plugins e temas WordPress no New Relic é a mais fácil de ser usada incorretamente.

Ao investigar o problema de desempenho de um site, pode ser tentador checar essa aba primeiro e simplesmente desativar o plugin que estiver consumindo mais tempo para ser processado. Entretanto, fazer isto é ignorar informações importantes encontradas em outras partes do New Relic. É semelhante a tratar os sintomas ao invés de ir a fundo e encontrar a causa raiz.

Plugins podem rodar mais lentamente devido a um problema de configuração incorreta, como um plugin de gerenciamento de assinaturas que esteja lento devido ao uso de um número de porta SMTP errado. Ou pode ser que um plugin não tenha sido desinstalado corretamente. Este é o tipo de informação que você poderia encontrar ao explorar uma transação lenta dentro da aba de transações e que nunca poderá ser corrigido ao simplesmente desativar o plugin mais lento relatado pelo New Relic.

Portanto, se acostume com essa aba, mas não ignore o restante das informações oferecidas pelo New Relic.

Bancos de Dados

Visão geral do MySQL no New Relic
Visão geral do MySQL no New Relic

A aba de bancos de dados permite que você identifique as tabelas e tipos de consultas ao banco de dados que consomem mais tempo. O New Relic atrela essas informações às transações que realizam tais consultas. Você pode usá-las para identificar quais tabelas do banco de dados podem precisar de otimização e quais arquivos do template estão causando sobrecarga no banco de dados.

Serviços Externos

Serviços externos no New Relic
Serviços externos no New Relic

A maioria dos websites WordPress dependem de diversos serviços externos:

  • Atualizações de plugins, temas e do núcleo são entregues pelo wordpress.org, bem como pelos desenvolvedores de plugins e temas.
  • Muitos plugins se integram com APIs de terceiros, como o plugin de otimização de imagem Smush da WPMU DEV (smushpro.wpmudev.org na captura de tela acima).
  • Plugins de chat costumam ser oferecidos por serviços externos.
  • Muitos sites são integrados com plataformas de mídias sociais para apresentar um visual e desempenho otimizados quando o conteúdo é compartilhado nessas redes.

Quando um desses serviços externos para de responder pontualmente, ele pode levar seu website inteiro a uma paralisação.

A aba de serviços externos permite que você veja rapidamente quais serviços externos estão consumindo mais tempo. É possível usar essa informação para determinar se é um problema de velocidade (o serviço está respondendo lentamente) ou quantidade (existem muitas chamadas para a fonte externa) e assim trabalhar para resolver a questão.

Análise de Erros

Análise de erros no New Relic
Análise de erros no New Relic

A aba de análise de erros relata os erros PHP encontrados durante o carregamento do seu site WordPress. Os erros são agrupados em classes, assim você pode visualizar rapidamente quantos tipos diferentes estão sendo gerados. Eles também são atrelados às transações que os causaram. Se você seleciona um erro específico, pode ver um rastreamento completo da transação que o gerou.

Pense na análise de erros como um log de erros PHP mais organizado. Ela pode se mostrar inestimável quando você estiver tentando rastrear os arquivos que estão gerando erros PHP e as transações onde tais erros ocorrem.

Depurando Páginas de Carregamento Lento

O erro mais comum que nossa equipe depura usando o New Relic é o caso de uma página ou processo específico que esteja levando um tempo excepcionalmente longo para carregar. Quando isso acontece, a aba Transações no New Relic APM é quase sempre o primeiro lugar a visitar.

O processo que você deve seguir para diagnosticar uma página de carregamento lento é bastante direto:

  1. Duplicar a transação lenta.
  2. Encontrar a transação na lista de transações lentas no New Relic.
  3. Analisar o resumo da transação e rastrear detalhes para determinar a causa do desempenho lento.

Vamos dar uma olhada em um exemplo disso e ver como o New Relic pode ser usado para diagnosticar o problema.

Etapa 1: Duplicar a Transação

Vejamos um exemplo. Nele, nosso cliente está observando um carregamento lento cada vez que um post individual do blog é aberto. Todas as outras páginas carregam normalmente, mas posts individuais levam diversos segundos para carregar.

Então, o primeiro passo é duplicar o problema. Neste caso, isso significa visitar um post único do blog algumas vezes para garantir que o New Relic capture os dados necessários.

Observação: Se seu site usa cache nas páginas, um recurso que é embutido aqui na plataforma da Kinsta, você precisará limpá-lo entre cada carregamento de página. Do contrário, acabará carregando a página a partir do cache ao invés de fazer com que o WordPress a gere.

Etapa 2: Encontrar a Transação Lenta

Após ter duplicado a transação lenta algumas vezes, vá até o New Relic e selecione a aba Transações. Em seguida, role a página para baixo até encontrar a lista de transações lentas, na porção inferior no lado direito do painel New Relic.

Transações lentas no New Relic
Transações lentas no New Relic

Clique na transação que você estiver depurando para visualizar os detalhes.

Etapa 3: Analisar o Resumo da Transação e Rastrear os Detalhes

Após selecionar a transação, um resumo da mesma será exibido.

Resumo da transação lenta
Resumo da transação lenta

O resumo permite que você obtenha uma visão geral dos componentes que contribuíram para o tempo de processamento da transação. No caso do nosso exemplo, uma chamada de uma fonte externa (www.googleapis.com) é responsável por 5.000 milissegundos de uma transação que levou um total de 5.350 milissegundos para ser concluída.

Embora seja uma informação útil, a aba de detalhes de rastreamento oferece as especificações que precisamos conhecer para entender exatamente o que está acontecendo.

Detalhes de rastreamento da transação lenta
Detalhes de rastreamento da transação lenta

A aba de detalhes de rastreamento fornece uma cascata hierárquica de etapas que exibe a função, consultas ao banco de dados e chamadas externas que o PHP executa quando a página é gerada.

No caso da transação de nosso exemplo, os detalhes de rastreamento revelam que uma chamada para a URL do Google Analytics é o que está atrasando o processo. Se fizermos o caminho contrário até sua solicitação, veremos que ela é iniciada por uma função PHP chamada gapp_get_post_pageviews. Uma pesquisa rápida no Google por essa transação revela que se trata de uma parte do plugin Google Analytics Post Pageviews. Este plugin está instalado no site e é usado para adicionar um contador de visualizações em uma barra fixa no cabeçalho.

O New Relic nos permitiu isolar o contador de visualizações na barra fixa do cabeçalho como o componente primário que mais contribuiu para reduzir a velocidade de carregamento de posts únicos do blog no site em questão. Agora, o proprietário deste site sabe exatamente qual componente deve ser seu alvo na tentativa de resolver o carregamento lento em posts individuais do blog.

Corrigindo Lentidão Geral

O segundo tipo mais comum de problema que resolvemos para nossos clientes são as reclamações de que o site inteiro está carregando lentamente. Quando cada transação leva muito tempo para carregar, uma das três opções costuma estar acontecendo:

  • O site está carente de recursos do servidor.
  • Um plugin ou tema ativo está causando problemas.
  • O banco de dados do site está com dificuldades para acompanhar a taxa de consultas.

Na Kinsta, os problemas de recursos do servidor são raros, pois nossas máquinas virtuais escaláveis são capazes de gerenciar quantidades variáveis de carregamento. Entretanto, se o site está carente de CPU ou RAM, pode apresentar lentidão geral que o New Relic não irá apontar em nenhum recurso único. Portanto, se você observa lentidão geral e o New Relic indica que cada parte do site está contribuindo para isso, verifique o carregamento do seu servidor para ver se a falta de recursos é a culpada.

Se seu site possui acesso a muitos recursos do servidor, o próximo local que você deve checar para diagnosticar lentidão geral incluem a aba de plugins e temas WordPress, a aba de serviços externos e a aba de bancos de dados.

Aqui estão exemplos de lentidão geral que podem ser diagnosticados usando cada uma dessas abas.

Lentidão Geral Causada por um Plugin

Quando um plugin está causando lentidão geral, os sintomas variam de acordo com a atividade que o plugin está realizando. No entanto, em muitos casos, você verá que um plugin lento afetará cada página de um site WordPress. No caso do site cujos dados você vê na imagem abaixo, a lentidão geral foi observada em cada página de front-end do site. Uma vez que você saiba como usá-lo, New Relic pode ser uma ferramenta valiosa para identificar gargalos de desempenho PHP em seu site WordPress.

Aqui está o que a New Relic tinha a dizer sobre a performance dos plugins no site.

Plugins WordPress
Plugins WordPress

Imediatamente, você pode observar que o plugin adinjector está consumindo mais de 15 vezes a quantidade de tempo que o segundo plugin mais lento.

Quando você vê dados como esses, pode ser tentador repudiar o plugin como se fosse codificado de maneira pobre ou ineficiente de alguma forma. Embora isso seja verdade em alguns casos, nem sempre é o que acontece. Um plugin mal configurado, lentidão no banco de dados ou recursos externos que demoram a responder podem fazer com que o plugin consuma muito tempo de processamento.

Portanto, quando você vê um plugin que esteja respondendo lentamente, é uma boa ideia verificar várias telas do New Relic para encontrar informações adicionais. As transações, bancos de dados e recursos externos devem ser averiguados antes de decidir que desativar o plugin é a melhor ou única forma de seguir em frente.

Lentidão Geral Causada por Serviços Externos

Se um site depende de uma chamada para um serviço externo para gerar visualizações de páginas e ele para ou leva um tempo muito longo para responder, o resultado pode ser um website WordPress que é completamente impedido de carregar.

Top 5 serviços externos
Top 5 serviços externos

A imagem acima é do mesmo site que produziu a captura de tela de plugins lentos anteriormente. Como você pode observar, há um único serviço externo que está contribuindo com uma quantidade desproporcional no tempo total de espera pelos serviços externos.

Este caso demonstra porque é necessário visualizar as informações combinadas antes de chegar a uma conclusão. O serviço que está sendo chamado nesta situação é do desenvolvedor do plugin identificado na etapa anterior.

Esta informação adiciona um pouco de nuance para a situação. Não é o código do plugin que é o problema. Ao invés disso, parece que o plugin faz muitas chamadas ao website do desenvolvedor e estas chamadas, quando combinadas, estão consumindo muito tempo de processamento.

Se dermos um passo adiante e olharmos para uma transação lenta para este site, podemos observar que esta chamada externa parece verificar o status da licença do plugin em questão, o que sugere que a licença para este plugin específico pode ter expirado.

Em qualquer situação, agora podemos alertar o proprietário deste site que o plugin adinjector está causando um desempenho lento e que isso ocorre devido a chamadas repetidas para o website do desenvolvedor para verificar o status de sua licença.

Lentidão Geral Causada por um Banco de Dados Sobrecarregado

Um banco de dados otimizado de forma pobre pode causar lentidão geral em um site WordPress. Uma otimização que sempre recomendamos que seja feita é converter seu banco de dados de MyISAM para InnoDB. No New Relic, a lentidão relacionada ao banco de dados provavelmente será exibida em dois locais:

  • Primeiro, você observará uma quantidade exagerada de atividade do MySQL na visão geral.
  • Segundo, você observará uma ou mais tabelas do banco de dados consumindo muito tempo, na aba de bancos de dados.

Começando pela tela da visão geral, um site que está enfrentando dificuldades no banco de dados pode aparentar algo como:

Tempo de transações web
Tempo de transações web

Para obter um controle melhor sobre qual tabela ou consulta do banco de dados está causando o problema, dirija-se à aba de bancos de dados.

Visão geral do MySQL
Visão geral do MySQL

A aba de bancos de dados apontará a tabela e o tipo de consulta que estão consumindo mais tempo. Se você selecionar uma das entradas na lista, poderá ver mais detalhes sobre ela, incluindo algumas amostras de consultas.

Consulta lenta – tabela wp_options
Consulta lenta – tabela wp_options

Neste caso, os dados apontam o dedo para informações de carregamento automático na tabela wp_options. Obviamente, uma análise rápida da tabela wp_options confirma que aproximadamente 250 MB de dados estão carregando automaticamente a partir desta tabela, tornando este site um candidato óbvio para manutenção e otimização em seu banco de dados. Verifique nosso post mais aprofundado sobre como otimizar sua tabela wp_options e dados de carregamento automático.

É Hora de Depurar!

Uma vez que você saiba como utilizá-lo, New Relic pode ser uma ferramenta valiosa para identificar gargalos de desempenho PHP em seu site WordPress. Para extrair o máximo que o New Relic tem a oferecer, é crucial que você conheça o WordPress, compreenda as informações que cada aba está relatando e seja capaz de visualizar como todas as informações estão interconectadas.

Temos outro caso de estudo interessante sobre o assunto que você deve dar uma olhada: Depurando Problemas de Desempenho no WordPress – Checklist de Coisas que Acontecem

Você tem outras dicas para o New Relic no WordPress? Adoraríamos conhecê-las na área de comentários abaixo.

Jon Penland

Jon is the Chief Operating Officer at Kinsta and is involved with Kinsta's sales, customer service, and technical support teams on a daily basis. Jon's a family man. So when he isn't feverishly tapping the keys of his laptop he's usually helping one of his kids fix a bike or setting up Netflix for an impatient preschooler.