Quando chegar a hora de escolher um plano de hospedagem, é importante escolher aquele que melhor atenda às demandas do seu site WordPress.

Por exemplo, um site de eCommerce que recebe 50.000 visitantes por mês normalmente vai ser muito mais exigente em recursos do que um simples blog com a mesma quantidade de tráfego.

Isso ocorre porque os sites de eCommerce são, por natureza, dinâmicos e exigem mais recursos para PHP e consultas ao banco de dados.

É aí que entram em jogo as Threads PHP. Leia mais abaixo sobre o que são as Threads PHP e como elas são usadas para acelerar o processamento de solicitações no seu site.

O que são threads PHP?

No contexto do WordPress, as Threads PHP são responsáveis por construir páginas, processar tarefas programadas em segundo plano e muito mais. Como as Threads PHP geram as páginas HTML que são entregues aos visitantes do seu site, elas determinam quantas solicitações simultâneas sem cache seu site pode processar a qualquer momento.

Por exemplo, imagine que seu site WordPress tenha duas Threads PHP e não utilize cache de página. Se quatro solicitações chegarem ao site ao mesmo tempo, duas serão processadas imediatamente, enquanto as outras duas terão que aguardar na fila até que as primeiras sejam concluídas.

Aqui na Kinsta, utilizamos as Threads PHP como uma das variáveis para definir os diferentes níveis de planos. Por exemplo, os planos WP 5 incluem 4 Threads PHP por site, enquanto os planos Enterprise começam com 8 Threads PHP por site.

Embora implementemos cache em nível de servidor, para solicitações onde o cache é ignorado ou não é acionado, as Threads PHP tornam-se fundamentais, pois precisam processar cada solicitação individualmente.

Normalmente, vemos um número maior de solicitações sem cache em sites de eCommerce e fóruns comunitários. Por isso, esses tipos de sites precisam geralmente de mais Threads PHP para garantir que todas as solicitações sejam processadas sem atrasos ou erros de tempo limite (timeout).

Se o seu site é altamente otimizado ou não tem muito código PHP (por exemplo, um tema complexo ou muitos plugins WordPress), então o processamento de cada solicitação deve acontecer quase que instantaneamente. Mesmo com 2 Threads PHP e 4 requisições, todas as quatro requisições seriam tratadas muito rapidamente.

Resumindo, uma Thread PHP é um processo em segundo plano no servidor que executa código PHP.

Como o WordPress utiliza as Threads PHP?

Antes de entrarmos em como otimizar o uso das Threads PHP no WordPress, temos que primeiro entender como o WordPress usa Threads PHP.

Em um ambiente sem cache, uma solicitação típica funciona da seguinte maneira:

  1. O servidor web (Nginx ou Apache) recebe uma solicitação de um visitante.
  2. Nginx encaminha a solicitação para o PHP.
  3. PHP consulta o banco de dados MySQL conforme necessário e usa os templates PHP do seu tema para gerar uma página HTML.
  4. PHP entrega uma página HTML renderizada de volta para o servidor web.
  5. A página é entregue ao visitante.

No processo destacado acima, o Passo 3 é o mais intensivo em tempo e recursos (CPU e RAM). Um site altamente otimizado, com menos consultas ao banco de dados e código PHP eficiente, conseguirá passar por essa etapa de forma muito mais rápida.

Pelo contrário, um site com código PHP mal escrito que faz muitas consultas desnecessárias a bancos de dados gastará muito mais tempo para passar pelo Passo 3, o que significa que as solicitações ocuparão as Threads PHP por períodos mais longos de tempo.

Qual é a relação entre Threads PHP e CPU?

Quando falamos de desempenho no WordPress, a relação entre Threads PHP e a CPU disponível é um fator essencial a ser considerado.

Se a falta de recursos de CPU é o gargalo do seu site, o aumento do número de Threads PHP não aumentará a performance do seu site – só permitirá que seu site processe mais solicitações ao mesmo tempo com uma performance mais lenta por solicitação.

Vou explicar melhor.

Imagine um hidrante com uma única mangueira conectada. Com apenas uma mangueira, o hidrante fornece pressão de água adequada. Agora, o que acontece se conectarmos dez mangueiras ao mesmo hidrante?

A pressão de água limitada será distribuída entre as dez mangueiras, resultando em menos pressão em cada uma delas.

Com isso em mente, desconfie se seu provedor de hospedagem sugerir aumentar o número de Threads PHP sem mencionar os recursos de CPU disponíveis.

Aqui na Kinsta, nossos contêineres LXD personalizados são configurados para fornecer ampla CPU e memória RAM. Além disso, utilizamos máquinas virtuais C2 e C3D equipadas com os processadores mais rápidos do Google Cloud para garantir que as Threads PHP operem com máxima eficiência. Nossa infraestrutura escalável assegura que seu site WordPress tenha recursos de CPU suficientes para um desempenho otimizado.

Voltando à analogia do hidrante…

Agora, imagine que você precisa apagar dez incêndios usando cinco mangueiras. Após conectar todas as cinco, percebe que o hidrante ainda fornece pressão suficiente.

Nessa situação, faz sentido conectar mais algumas mangueiras, pois a pressão da água não está sendo um gargalo.

Da mesma forma, se seu site estiver com baixo desempenho mesmo com CPU e RAM suficientes, aí sim aumentar o número de Threads PHP pode ser uma solução viável para melhorar o desempenho.

Como otimizar o uso das Threads PHP no seu site

Explicamos que as Threads PHP são processos em segundo plano que geram páginas HTML a partir do código PHP. Agora, a maneira mais eficaz de reduzir e otimizar o uso das Threads PHP é diminuir a carga de CPU e os recursos PHP necessários para processar as solicitações do seu site.

Veja como fazer isso.

1. Configure o cache para o seu site WordPress

O primeiro passo para reduzir o uso das Threads PHP é configurar camadas de cache para o seu site WordPress. Por padrão, o WordPress é um CMS dinâmico que atende a todas as solicitações de página sob demanda.

Para muitos sites, como blogs, revistas on-line e portfólios, não é necessário usar PHP para gerar páginas dinamicamente em cada solicitação.

Cache de página

O artigo que você está lendo agora é um exemplo perfeito de uma página que não precisa ser gerada dinamicamente. Assim como muitos outros artigos do nosso blog, o conteúdo foi projetado para ser estático, o que significa que não há necessidade de gastar recursos da CPU gerando páginas idênticas repetidamente.

Em vez disso, a melhor abordagem é gerar a página uma única vez com PHP e armazená-la em cache. O cache de página oferece diversas vantagens em comparação com a geração dinâmica de páginas via PHP.

Por exemplo, imagine que um artigo do seu blog viralize e receba 100.000 visualizações em poucas horas. Sem cache de página, suas Threads PHP ficariam sobrecarregadas e, provavelmente, seu servidor falharia.

Com cache de página, apenas a primeira solicitação geraria a página dinamicamente. As outras 99.999 solicitações seriam atendidas diretamente a partir do cache, consumindo muito menos recursos da CPU.

Existem duas formas principais de configurar o cache de página no WordPress:

  1. Cache de página em nível de servidor, utilizando um servidor web como o Nginx.
  2. Cache de página via plugin WordPress, como o WP-Rocket.

Para máxima performance, recomendamos o uso de cache de página em nível de servidor sempre que possível. Na Kinsta, todos os nossos sites usam o módulo de cache FastCGI da Nginx para garantir alta performance.

Se o seu provedor de hospedagem não oferece essa opção, a alternativa é usar um plugin de cache para implementar o cache em nível de aplicação.

Cache de objetos

Para lojas WooCommerce, fóruns comunitários e outros sites WordPress que não podem fazer uso eficiente do cache de páginas, adicionar um cache de objetos persistentes como Redis pode melhorar significativamente o desempenho e reduzir a carga nas Threads PHP.

Sem um cache de objetos persistente, consultas de banco de dados MySQL serão executadas para cada solicitação, mesmo que o resultado seja idêntico a uma solicitação anterior.

Por exemplo, um site de fórum da comunidade que ignora o cache de página fará consultas idênticas repetidas ao banco de dados para obter os dados dos artigos e construir uma página.

Para sites de alto tráfego e muitas consultas ao banco de dados, esse método é ineficiente, pois consome recursos das Threads PHP apenas para gerar os mesmos resultados repetidamente. É aí que entra o Redis.

A Redis armazena os resultados das consultas ao banco de dados na RAM, permitindo que o PHP reutilize os dados de consultas já executadas. Dessa forma, as Threads PHP economizam CPU, pois não precisam repetir as mesmas consultas ao banco de dados várias vezes.

2. Otimize seu código PHP

Além de configurar o cache de página, outra estratégia essencial para reduzir o uso das Threads PHP é otimizar o código PHP do seu site. No contexto do WordPress, “otimizar o código PHP” pode envolver diversas práticas. Vamos analisar algumas delas.

Uma das características mais adoradas e odiadas do WordPress (dependendo de quem você perguntar) é sua extensibilidade através de plugins e trechos de código.

Se você quiser adicionar um widget de ticker de estoque ao seu site WordPress, existe um plugin para isso. Da mesma forma, se quiser usar fontes personalizadas, há um código para o functions.php que faz isso.

No entanto, como adicionar funcionalidades ao WordPress é muito fácil, muitas vezes acabamos exagerando, sem pensar no impacto que isso pode ter no desempenho do site.

A primeira etapa para otimizar o código PHP é auditar seu site para identificar quais plugins e snippets são realmente necessários.

Escolha plugins de qualidade

Na maioria das vezes, o número de plugins em seu site WordPress não é tão importante quanto a qualidade dos plugins. Se um plugin não tiver sido atualizado nos últimos seis meses, recomendamos procurar uma alternativa mais atualizada.

Isso porque o WordPress está em constante evolução. Se um plugin não é atualizado há anos, é provável que seu código não siga as melhores práticas atuais de desenvolvimento e segurança.

Por outro lado, se um plugin recebe atualizações constantes (a cada poucas semanas, por exemplo), isso é um bom indicativo de qualidade, pois mostra que os desenvolvedores estão ativos e comprometidos com a manutenção.

Use plugins apenas quando necessário

Se você está procurando realizar uma tarefa simples em seu site, como adicionar JavaScript ou CSS, você nem sempre precisa de um plugin para isso. Ao invés disso, você pode adicionar código diretamente aos templates PHP do seu tema ou ao arquivo style.css com um child theme.

Da próxima vez que pensar em instalar um novo plugin, reflita se ele é realmente necessário. Em alguns casos, não há como evitar a instalação de um plugin, e isso não é um problema. Mas, sempre que possível, evitar plugins desnecessários pode reduzir significativamente a sobrecarga de código no seu site.

Escolha temas leves e otimizados

Com base em nossa experiência monitorando milhares de sites WordPress, descobrimos que temas mal otimizados são, ocasionalmente, responsáveis pelo desempenho ruim do PHP. Para atender à versatilidade do WordPress como CMS de uso geral, alguns desenvolvedores criam temas que funcionam para uma ampla gama de casos de uso.

Muitas vezes, isso resulta em temas excessivamente carregados, que não utilizam o PHP e as consultas ao banco de dados de forma eficiente.

Ao construir um site WordPress, é importante escolher um tema otimizado para desempenho e personalização. Algumas boas opções incluem GeneratePress, OceanWP e Astra.

3. Escolha uma hospedagem de WordPress focada em desempenho

Acredite ou não, escolher o provedor de hospedagem certo pode ter um grande impacto no desempenho do seu site. Como a eficiência das Threads PHP está diretamente relacionada à CPU e à RAM disponíveis, hospedar seu site em um servidor moderno, equipado com o hardware mais recente, pode ajudar a otimizar o uso das Threads PHP.

Aqui estão dois exemplos que mostram por que escolher um provedor de hospedagem focado em desempenho é essencial para sites WordPress.

CPUs de Alto Desempenho

O PHP utiliza recursos da CPU para executar o código. Um processador mais rápido resulta em uma execução de código mais eficiente. Na Kinsta, usamos os servidores mais rápidos do Google Cloud — Máquinas Virtuais otimizadas para computação C2 e Máquinas Virtuais de uso geral C3D do Compute Engine.

Essas Máquinas Virtuais estão equipadas com os mais recentes processadores Intel Xeon, capazes de operar a 3,8 GHz com turbo em todos os núcleos. Em nossos testes de benchmark, observamos que as máquinas C2 superaram as máquinas N1 tradicionais em desempenho, com uma melhoria de 2 a 4 vezes, enquanto as máquinas C3D apresentaram tempos de resposta até 20% a 50% melhores.

Armazenamento rápido SSD

A velocidade de entrada/saída de disco (I/O) pode ter um impacto direto na execução do código e nas consultas ao banco de dados. Se o banco de dados estiver armazenado em um disco mecânico lento ou em um SSD baseado em nuvem sem IOPS suficientes (operações de entrada/saída por segundo), suas Threads PHP serão forçadas a gastar mais tempo processando uma solicitação.

Na Kinsta, utilizamos armazenamento SSD de alto desempenho do Google Cloud Platform para garantir que seu site WordPress tenha acesso rápido à entrada/saída de disco.

4. Trabalhe com um especialista em desempenho (opcional)

Se você não tem certeza sobre como resolver um problema de desempenho em seu site, recomendamos trabalhar com um especialista em desempenho qualificado para diagnosticar o problema.

Um especialista pode ajudá-lo a identificar gargalos específicos em seu código usando ferramentas avançadas de monitoramento, como o New Relic ou o plugin Query Monitor para WordPress.

Ao analisar individualmente os processos PHP e consultas ao banco de dados, é possível identificar blocos de código específicos e suas funcionalidades associadas, que podem estar sobrecarregando as Threads PHP do seu site.

Para resumir a otimização das Threads PHP, tenha em mente as seguintes dicas.

  1. CPU e RAM devem ser escaladas junto com as Threads PHP. Se a utilização da CPU estiver bloqueada a 100%, adicionar mais Threads PHP não irá melhorar a performance.
  2. Hospedar seu site em uma provedora focada em desempenho pode solucionar muitos problemas de performance.
  3. O cache de páginas e o cache de objetos podem reduzir significativamente a carga nas Threads PHP.
  4. Usar plugins e temas WordPress de qualidade pode minimizar o excesso de código desnecessário no seu site.
  5. Se necessário, trabalhe com um especialista em desempenho para identificar e resolver problemas complexos.

Consequências de não ter Threads PHP suficientes

Para atingir um desempenho rápido e confiável para o seu site WordPress, é essencial garantir que ele tenha Threads PHP suficientes. Quando as Threads PHP já estão ocupadas processando solicitações, elas começam a formar uma fila de espera.

Uma vez que você tenha atingido seu limite de Threads PHP, a fila começará a descartar solicitações mais antigas, o que pode resultar em erros 504 (Gateway Timeout) ou requisições incompletas.

Outro erro comum que vemos devido à falta de Threads PHP é o erro 502 bad gateway. Esse erro é ligeiramente diferente do 504, pois ocorre quando uma solicitação na fila da Thread PHP excede o tempo limite de 60 segundos.

Além de prejudicar a experiência do usuário, esses erros podem ter um impacto negativo no SEO do seu site.

Um erro 502 (Bad Gateway).
Um erro 502 (Bad Gateway).

Há uma série de fatores diferentes que podem causar lentidão ou erros de página. Por exemplo, se uma solicitação sem cache requer muitos dados do banco de dados, a consulta resultante pode levar de 20 a 30 segundos para ser concluída.

Nessa situação, uma Thread PHP ficaria ocupada por pelo menos meio minuto. Se o seu site tiver apenas duas Threads PHP, apenas duas ou três dessas solicitações demoradas podem ser suficientes para começar a causar erros.

Para resolver isso, otimizar o banco de dados MySQL e aumentar o número de Threads PHP, caso a CPU ainda não esteja no limite, pode melhorar o desempenho.

Estimando o número necessário de Threads PHP

Cada plano de hospedagem da Kinsta inclui um número específico de Threads PHP. Esse número é definido com base em métricas de uso de recursos que coletamos ao longo dos últimos anos. De forma geral, sites com conteúdo predominantemente estático – como artigos, páginas estáticas e portfólios – não exigem muitas Threads PHP.

Para grandes sites WordPress com funcionalidades mais dinâmicas, como eCommerce ou fóruns de discussão, encontramos 4 Threads PHP como um bom ponto de partida. Entretanto, isso pode variar por site, pois cada um terá seu próprio conjunto único de temas, plugins, consultas ao banco de dados e proporção entre cache e solicitações sem cache.

Em alguns casos, pode ser necessário um número maior de Threads PHP para garantir um desempenho rápido e confiável. Se você não tem certeza sobre quantas Threads PHP seu site precisa na Kinsta, nossas equipes de vendas e suporte podem ajudá-lo a determinar a melhor configuração.

Gráfico de limite de Threads PHP

O gráfico de limite de Threads PHP na aba análise do MyKinsta permite que você veja quantas vezes o mecanismo PHP reportou atingir o número máximo de threads alocados em seu registro de erros. Este gráfico pode ajudá-lo a avaliar as otimizações de desempenho estão impactando o uso das Threads PHP.

Principais bypasses de cache
Principais bypasses de cache.

Por exemplo, se você trocasse a versão do PHP do seu site de 5.6 para 7.4, você provavelmente veria uma queda nos limites de Threads PHP porque o PHP 7.4 é muito mais rápido que a versão 5.6.

Da mesma forma, se você trabalhar com um especialista em desempenho para corrigir consultas demoradas ao banco de dados e trocar para um tema mais leve, poderá usar o gráfico de limite de Threads PHP para comparar os resultados antes e depois das otimizações.

Gráfico de análise de cache

Você também pode usar o relatório de análise de cache no MyKinsta para determinar o número de acertos, bypasses, falhas e expirações de cache. Estes dados podem ser especialmente úteis ao otimizar o uso das Threads PHP do seu site.

Cache bypass com strings de consulta

Por padrão, URLs com strings de consulta como https://kinstalife.com/?query=123 ignoram o cache de página. Em alguns casos, as query strings podem resultar em um grande pico de uso desnecessário de PHP e CPU.

Por exemplo, ao acessar um link pelo Facebook, muitas vezes a URL conterá o parâmetro ?fbclid= no final. Da mesma forma, ao clicar em um link em um e-mail marketing, você pode ver parâmetros de rastreamento UTM na URL.

Uma URL com uma query string (?querystring=123).
Uma URL com uma query string (?querystring=123).

Se um artigo em seu site ficar viral, e for acessado constantemente com uma query string anexada, você poderá identificar a URL específica no relatório de análise de cache.

Com essa informação, você pode entrar em contato com nossa equipe de suporte para forçar o cache dessa URL específica, reduzindo a carga nas Threads PHP e melhorando a performance do site.

Identificando plugins que consomem muitos recursos

Em alguns casos, o gráfico de análise de cache também pode ser usado para identificar plugins e processos pesados de recursos.

Por exemplo, se a URL com maior bypass de cache aponta para um arquivo dentro do diretório de um plugin específico, há uma grande chance de que esse plugin seja responsável pelo uso excessivo de Threads PHP.

Se você notar muitas solicitações relacionadas a plugins na sua lista de bypass de cache, pode ser útil trabalhar com um desenvolvedor para resolver o problema ou substituir o plugin por uma alternativa que consuma menos recursos.

Resumo

O objetivo de manter um site WordPress rápido é maximizar a eficiência do backend. Quando as Threads PHP são utilizadas corretamente — encontrando o equilíbrio entre quantidade de Threads, uso de CPU e otimização do código — o WordPress pode se tornar um CMS extremamente eficiente.

Se você tiver dúvidas sobre quantas Threads PHP seu site precisa ou suspeitar que está enfrentando erros devido à falta de Threads PHP, abra um ticket com nossa equipe de suporte para obter assistência.

Agora é a sua vez: Quais estratégias de otimização você usa para manter seu site WordPress rodando sem problemas? Conte para nós nos comentários!

Brian Li

Brian é usuário de WordPress há mais de 10 anos e gosta de compartilhar seu conhecimento com a comunidade. Em seu tempo livre, Brian curte tocar piano e explorar Tóquio com sua câmera. Conecte-se com Brian em seu site em brianli.com.