Desempenho do PHP
Quando se trata de desempenho do WordPress, mais threads PHP não significam automaticamente melhor desempenho; há vários fatores que você deve considerar:
- Cache: O armazenamento em cache eficaz pode reduzir a carga de trabalho nos threads PHP, fornecendo conteúdo em cache em vez de gerá-lo dinamicamente para cada solicitação. Isso pode melhorar significativamente o desempenho, especialmente para recursos acessados com frequência.
- Hardware: Os recursos de hardware disponíveis no servidor, como CPU, memória (RAM) e velocidade do disco, afetam diretamente o desempenho do thread PHP. Recursos insuficientes podem causar lentidão no processamento e afetar a performance.
- Configuração do servidor web: A configuração do servidor web e sua interação com o PHP podem influenciar o desempenho do thread.
- Velocidade do banco de dados: Os aplicativos PHP geralmente recuperam dados de bancos de dados MySQL para gerar conteúdo dinâmico. A velocidade da recuperação de dados depende de fatores como a organização do banco de dados, a otimização da consulta e o desempenho do servidor do banco de dados. Esses elementos afetam diretamente o desempenho geral dos aplicativos PHP.
- Versão do PHP: As versões mais recentes do PHP geralmente resultam em melhor desempenho do thread PHP devido a aprimoramentos de desempenho, correções de bugs e atualizações de segurança.
Na Kinsta, valorizamos a importância do desempenho do seu site. É por isso que implementamos várias tecnologias destinadas a maximizar o desempenho do PHP e minimizar as solicitações de PHP:
- Oferecemos cache de páginas nos níveis do CDN e servidor, com regras personalizáveis para garantir a máxima eficiência do cache.
- Usamos servidores premium no Google Cloud Platform (máquinas virtuais C2 e C3D) equipados com as CPUs mais rápidas do Google Cloud para ajudar os threads PHP do seu site a serem executados com mais eficiência.
- Nossa infraestrutura escalável garante que os threads PHP do seu site WordPress tenham recursos de CPU suficientes para operar com desempenho máximo.
- Utilizamos uma infraestrutura de rede premium no Google Cloud Platform (GCP) para minimizar a latência. Ao aproveitar a rede premium do Google Cloud Platform, reduzimos significativamente o tempo que os dados levam para trafegar entre os diferentes componentes da nossa infraestrutura, inclusive o servidor MySQL e os servidores web.
- Fornecemos um servidor MySQL altamente otimizado, hospedado localmente para reduzir a latência da rede e melhorar a recuperação de dados e as velocidades de processamento.
- No servidor MySQL, temos buffers InnoDB para ajudar a melhorar o desempenho do banco de dados, reduzindo as operações de E/S de disco. Os dados podem ser acessados mais rapidamente da memória em vez de do disco, aumentando a eficiência das operações de leitura e gravação e resultando em melhor desempenho geral do banco de dados MySQL.
- Garantimos que a versão mais recente do PHP esteja sempre disponível para que você incorpore quaisquer aprimoramentos de desempenho.
Visualizar o desempenho do PHP
Você pode visualizar o desempenho do PHP em Sites WordPress > nome do site > Informações.
Isso mostra as seguintes informações:
- Memória total do PHP: A memória total do PHP distribuída entre os threads PHP.
- Threads PHP: Anteriormente conhecido como PHP workers. Esse é o número de threads PHP por site. Cada thread é um processo PHP que lida com uma solicitação de entrada por vez, portanto, mais threads permitem mais solicitações simultâneas. O conteúdo em cache ignora os threads PHP, que são necessários apenas para consultas ao banco de dados ou alterações de dados.
- Memória por thread: Esse é o limite de memória do PHP por thread, que é a quantidade máxima de memória (RAM) que cada thread PHP pode usar durante o processamento de uma solicitação.
- Limite de thread atingido: Mostra o número de erros “PHP thread limit reached” nesse ambiente nas últimas 24 horas. Quando esse erro ocorre, isso significa que o site não foi servido, e os visitantes do seu site veem apenas o erro 500. As principais causas desse erro são:
- Picos de alto tráfego: Se o seu site sofrer um pico repentino de tráfego, como durante uma promoção ou um evento, todos os threads PHP disponíveis podem ser bloqueados, resultando nesse erro.
- Código mal otimizado: Scripts PHP lentos ou com muitos recursos podem levar mais tempo para serem executados, fazendo com que os threads permaneçam ocupados por períodos mais longos. Se os scripts PHP envolverem consultas a bancos de dados complexas ou ineficientes, eles podem causar gargalos no processo de execução.
- Plugins ou temas ineficientes: Alguns plugins ou temas podem consumir recursos excessivos do servidor, levando a atrasos no processamento de threads. Mesmo que os plugins individualmente não consumam muitos recursos, se você tiver muitos deles, o processamento do PHP pode ficar mais lento cumulativamente.
- Tarefas em segundo plano: Processos em segundo plano ou cron jobs de longa duração (como backups agendados ou limpezas de banco de dados) podem consumir recursos de thread PHP, contribuindo para que o limite seja atingido.
- Ataque DDoS ou bots: Um ataque de negação de serviço distribuído (DDoS) ou grandes quantidades de tráfego de bots podem sobrecarregar o servidor e consumir todos os threads PHP disponíveis, causando esse erro.
- Limite de memória atingido: Essa métrica mostra o número de “PHP Fatal error: Allowed memory size of xxx bytes exhausted” nesse ambiente nas últimas 24 horas. Quando esse erro ocorre, isso significa que o site não foi servido, e os visitantes do seu site veem apenas o erro 500. As principais causas desse erro são:
- Processamento de grandes volumes de dados: Scripts que processam grandes conjuntos de dados, imagens ou arquivos (por exemplo, importações de CSV ou manipulação de imagens) podem consumir muita memória, resultando nesse erro.
- Vazamentos de memória no código: O manuseio inadequado de variáveis, objetos ou arrays grandes que não são liberados após o uso pode causar um vazamento de memória, levando a um alto consumo de memória.
- Código ou algoritmos ineficientes: Armazenar grandes arrays ou objetos na memória, especialmente sem otimizar como são gerenciados, pode esgotar a memória. Scripts que abrem arquivos, conexões de rede ou outros recursos externos sem fechá-los adequadamente podem aumentar gradualmente o uso de memória.
- Plugins ou temas mal projetados: Certos plugins ou temas podem consumir memória excessiva devido a código ineficiente ou má otimização. Mesmo que cada plugin individualmente não use muita memória, muitos plugins instalados e ativos podem coletivamente exceder os limites de memória.
- Tarefas em segundo plano: Cron jobs, tarefas agendadas ou scripts em segundo plano que executam por longos períodos ou manipulam grandes quantidades de dados podem acionar esse erro, especialmente se não forem otimizados.
Alterar o desempenho do PHP
Você pode alterar o desempenho do PHP para cada site em Sites WordPress > nome do site > Informações > Desempenho do PHP > Alterar.
Esta opção mostra o Pool total de memória no seu plano atual. O pool de memória é a memória total do PHP distribuída entre os threads PHP. Por exemplo, se você tiver 4 threads PHP e um pool total de memória de 2GB, o limite de memória PHP para cada thread será de 512MB.
Você pode alterar o pool de memória total para aumentar a quantidade total de memória distribuída entre os threads PHP. Você também pode usar o controle deslizante para adicionar:
- Mais threads: Ao mover o controle deslizante nessa direção, você aumenta o número de threads PHP do seu site. Quando os threads aumentam, a memória PHP é automaticamente redistribuída entre o número maior de threads, o que pode significar menos memória por thread. Por exemplo, se você tiver 16 threads com um pool total de memória de 2GB, o limite de memória PHP por thread será de 128MB. Se aumentar os threads para 32 e manter o mesmo pool de memória, o limite de memória por thread será de 64MB.
Mais threads permitem que seu site manipule várias solicitações de entrada simultaneamente. No entanto, com menos memória por thread, as tarefas com uso intenso de memória, como grandes consultas a bancos de dados ou uploads de mídia, podem exceder a memória disponível, levando a erros. É importante que você leve isso em consideração ao configurar seu site.
Sites dinâmicos que geram conteúdo em tempo real, como plataformas de eCommerce, sites gerenciados por CMS ou fóruns, tendem a se beneficiar de mais threads. Sites estáticos que exibem conteúdo fixo, como blogs ou sites de documentação, geralmente não se beneficiam de threads adicionais, pois exigem pouco processamento no servidor.
Você pode reduzir o uso de threads ativando o armazenamento em cache e otimizando seu código. Para obter mais detalhes sobre como minimizar o uso de threads, consulte Reduzir e otimizar o uso de threads PHP. - Mais memória: Você pode mover o controle deslizante nessa direção para aumentar o limite de memória PHP por thread; no entanto, se não aumentar o pool de memória PHP, o número de threads PHP disponíveis será reduzido. O limite máximo de memória por thread é de 1024 MB. Por exemplo, se você tiver 16 threads com um pool de memória total de 2 GB, o limite de memória do PHP para cada thread será de 128 MB. Se você aumentar o limite de memória, mas mantiver o mesmo pool de memória, isso reduzirá os threads do PHP para 2, e o limite de memória do PHP por thread será de 1024 MB.
A alocação de mais memória por thread permite que seu site lide com tarefas que exigem muita memória com mais eficiência, como uploads de conteúdo. Os sites com vários plugins ou aqueles que fazem solicitações extensas ao banco de dados podem se beneficiar de mais memória por thread para manter o desempenho ideal. No entanto, se você tiver menos threads, isso reduzirá o número de solicitações de entrada que o site pode processar simultaneamente.
À medida que você altera os valores, a imagem abaixo do controle deslizante mostra os valores atualizados e como eles são distribuídos entre os threads e a memória.
Quando você estiver satisfeito com a alocação de thread e memória, clique em Continuar. Se você tiver aumentado o pool de memória, isso criará um complemento de desempenho do PHP; os detalhes do preço são mostrados na próxima tela. A assinatura aparecerá no seu próximo ciclo de cobrança e será automaticamente rateada para o período de cobrança atual.
Nota: Como esse complemento é rateado, você pode aumentar temporariamente o pool de memória total, os threads ou a memória se estiver prevendo alto tráfego para eventos como a Black Friday ou a Cyber Monday. Após o evento, você pode reverter para as configurações originais e só será cobrado pelos dias em que o complemento esteve ativo.
Se você reduzir o pool de memória para remover o complemento de desempenho do PHP e estiver nos primeiros 30 dias do seu plano de hospedagem de WordPress, uma taxa proporcional para o complemento será adicionada à sua próxima fatura pelo período em que ele esteve ativado. Se o seu plano de Hospedagem de WordPress estiver ativo há mais de 30 dias, você receberá um crédito proporcional das taxas do complemento no saldo da sua conta para os dias restantes do período de cobrança atual. O crédito é usado automaticamente para compensar o dinheiro devido à Kinsta em sua próxima fatura. Para obter mais informações, consulte nossa Garantia de Devolução do Dinheiro da Hospedagem de WordPress.
Ambientes de teste
Você só pode alterar o pool de memória total no ambiente ativo. Se você ajustá-lo no ambiente de produção, o novo valor se aplica a todos os ambientes de teste padrão e premium.
Quando você altera o pool de memória ou a contagem de threads no ambiente ativo, a alocação de memória por thread para o ambiente de teste padrão é ajustada de acordo; no entanto, o número máximo de threads para um ambiente de teste padrão é limitado a 2. Por exemplo, se o ambiente ativo tiver um pool de memória de 2 GB com 4 threads PHP, cada thread terá um limite de memória de 512 MB. No ambiente de teste padrão, seriam 2 threads PHP, cada uma com um limite de memória de 512 MB.
Em ambientes de teste premium, você tem a flexibilidade de ajustar a contagem de threads e a memória independentemente do ambiente ativo.
Valores de distribuição de pool, threads e memória
As tabelas abaixo mostram as opções de distribuição disponíveis para a memória e os threads com base no valor do pool de memória total:
Pool de memória de 512 MB
Threads PHP | Memória por thread |
---|---|
2 | 256MB |
4 | 128 MB |
8 | 64 MB |
Pool de memória de 1 GB
Threads PHP | Memória por thread |
---|---|
2 | 512MB |
4 | 256 MB |
8 | 128 MB |
16 | 64 MB |
Pool de memória de 1,5 GB
Threads PHP | Memória por thread |
---|---|
3 | 512 MB |
6 | 256MB |
12 | 128 MB |
24 | 64 MB |
Pool de memória de 2 GB
Threads PHP | Memória por thread |
---|---|
2 | 1024MB |
4 | 512 MB |
8 | 256 MB |
16 | 128 MB |
32 | 64 MB |
Pool de memória de 2,5 GB
Threads PHP | Memória por thread |
---|---|
2 | 1024 MB |
5 | 512 MB |
10 | 256 MB |
20 | 128 MB |
Pool de memória de 3 GB
Threads PHP | Memória por thread |
---|---|
3 | 1024MB |
6 | 512MB |
12 | 256 MB |
24 | 128 MB |
Pool de memória de 4 GB
Threads PHP | Memória por thread |
---|---|
2 | 2048MB |
4 | 1024MB |
8 | 512 MB |
16 | 256 MB |
32 | 128 MB |
Se você precisar de mais threads PHP ou de um limite de memória maior por thread, recomendamos o uso de um servidor dedicado.
Remover o complemento de desempenho do PHP
Para remover o complemento de desempenho do PHP de todos os sites, vá para seu nome de usuário > Configurações da empresa > Meu plano e clique em Remover em Desempenho do PHP.
Isso redefine todos os sites de volta à memória PHP original e aos threads incluídos em seu plano. A janela de confirmação mostra de quais sites o complemento será removido e para qual pool de memória você será redefinido. Para confirmar a remoção, clique em Remover complemento de desempenho do PHP.
Para remover o complemento de desempenho do PHP de um site individual, você pode alterar o desempenho do PHP e reduzir o pool de memória total para o valor padrão incluído no seu plano. Você também pode remover o complemento de todos os sites que o têm ativado em seu nome de usuário > Configurações da empresa e, na seção Desempenho do PHP, clique em Remover.
A janela de confirmação mostra de quais sites o complemento será removido e para qual pool de memória do PHP, contagem de threads e memória por thread você será redefinido. Para confirmar a remoção, clique em Remover complemento de desempenho do PHP.
Se você estiver nos primeiros 30 dias do seu plano de hospedagem de WordPress, uma taxa proporcional para o complemento será adicionada à sua próxima fatura pelo período em que ele estava ativado. Caso o seu plano de hospedagem de WordPress esteja ativo há mais de 30 dias, você receberá um crédito proporcional das taxas do complemento no saldo da sua conta para os dias restantes do período de cobrança atual. O crédito é automaticamente usado para compensar valores devidos à Kinsta em sua próxima fatura. Para mais informações, consulte nossa Garantia de Reembolso de Hospedagem de WordPress.
Complemento de limite de memória PHP
Esse complemento aumenta o limite de memória de 256 MB para 512 MB a um custo de US$ 50 por site por mês. Para visualizar o complemento no MyKinsta, vá para Sites WordPress > nome do site > Complementos > Memória PHP.
Se você remover o complemento de limite de memória do PHP e estiver nos primeiros 30 dias do seu plano de hospedagem de WordPress, uma taxa proporcional para o complemento será adicionada à sua próxima fatura pelo período em que ele estava ativado. Se o seu plano de hospedagem de WordPress estiver ativo há mais de 30 dias, você receberá um crédito proporcional das taxas do complemento no saldo da sua conta para os dias restantes do período de cobrança atual. O crédito é automaticamente usado para compensar valores devidos à Kinsta em sua próxima fatura. Para mais informações, consulte nossa Garantia de Devolução do Dinheiro da Hospedagem de WordPress.
Identificando problemas de desempenho do PHP
Ferramenta APM da Kinsta
O uso de ferramentas como a ferramenta APM da Kinsta e o plugin Query Monitor pode ajudar a identificar problemas de desempenho e consultas lentas. Também recomendamos trabalhar com um especialista em desempenho qualificado para diagnosticar problemas.
Limite de thread PHP
Você pode acessar o gráfico de limite de thread PHP no MyKinsta > Sites WordPress > nome do site > Analytics > Desempenho > Limite de thread PHP.
Se um thread PHP não tiver nada para fazer por 10 segundos contínuos, o processo do thread PHP será encerrado automaticamente. Assim que for necessário novamente, o processo de thread será recriado instantaneamente. Este gráfico mostra a você quantas vezes o número máximo de threads alocados foi atingido em seu site.
Por exemplo, se você tiver um plano WP 5, ele permite um máximo de 4 processos de thread PHP. Se 3 threads PHP estiverem em uso e outra solicitação for feita ao seu site que exija um thread PHP, quando o thread PHP for criado, ele atingirá o número máximo de 4 threads PHP e será registrado como um incidente em que o limite de threads PHP foi atingido.
Isso pode fornecer a você apenas uma imagem parcial da atividade do thread PHP, pois registra apenas o número de vezes que o limite de threads PHP é atingido e não o tempo em que todos os threads PHP estiveram em uso.
Por exemplo, se o seu site tiver um aumento no tráfego, todos os threads PHP poderão permanecer consistentemente ocupados por uma hora inteira sem tempo ocioso e, portanto, não serão encerrados durante essa hora. Isso seria registrado apenas como uma instância em que o limite de threads do PHP foi atingido e, portanto, pode parecer que os threads PHP não foram ocupados durante essa hora, quando, na verdade, estavam todos ativos o tempo todo. Após 30 minutos, se houver uma diminuição no tráfego que permita que um thread PHP fique ocioso por 10 segundos, ele será encerrado automaticamente. No entanto, se o thread PHP for necessário novamente em mais um minuto, o número máximo de threads PHP será atingido novamente, resultando no registro de outro limite de thread PHP.
Se quiser aumentar o número de threads PHP do seu site, você pode fazer isso em Sites WordPress > nome do site > Informações > Desempenho do PHP > Alterar.
Se estiver investigando o desempenho do site e determinando se ele está usando continuamente os threads PHP, você poderá monitorar a atividade dos threads PHP usando ferramentas em uma sessão SSH. Por exemplo, o comando personalizado a seguir monitora o número de threads PHP ativos a cada 0,3 segundos:
watch -n 0.3 "ps aux | awk '\$(NF-2) ~ /php-fpm/ && \$(NF-1) ~ /pool/ && \$8 ~ /R/ { print \$0 }' | wc -l"
Para sair desse comando, pressione CMD + C ou CTRL + C e solte as duas teclas.
Limite de memória PHP atingido
Você pode acessar o gráfico do limite de memória PHP atingido em MyKinsta > Sites WordPress > nome do site > Análises > Desempenho > Limite de memória PHP atingido.
Esse gráfico mostra o número de vezes que o limite de memória do PHP foi atingido. O limite de memória PHP padrão da Kinsta é de 256 MB, o que é mais do que suficiente para a maioria dos plugins e Sites WordPress. Esse limite existe para evitar que os scripts PHP consumam memória excessiva. Se você definir o limite muito alto, um script mal configurado ou quebrado pode causar problemas sérios ao usar muita memória.
Isso fornece apenas uma visão parcial do uso de memória do PHP, pois registra o número de vezes que o limite de memória é atingido, mas não a duração dessas ocorrências.
Se o seu site estiver configurado corretamente na Kinsta, você não deverá atingir o limite de memória PHP. Se você atingir, recomendamos reduzir e otimizar o uso de threads PHP.
Você pode alterar o limite de memória PHP de um site em Sites WordPress > nome do site > Informações > Desempenho do PHP > Alterar.
Análise de cache
A seção de análise de cache na análise de cache do MyKinsta pode ser usada para visualizar o total de solicitações em cache do seu site e os principais desvios de cache.
Reduzir e otimizar o uso de threads PHP
Cache
O cache é seu maior aliado para otimizar o site e reduzir o número de threads PHP necessários. Lembre-se, threads PHP não são usados para conteúdo em cache, então armazene em cache tudo o que puder.
Cache de página
Na Kinsta, cuidamos do cache de páginas para você; todos os sites usam o módulo de cache FastCGI do Nginx para um desempenho super-rápido.
Edge Caching
O Edge Caching armazena o cache do seu site ou página da Kinsta (normalmente salvo apenas no centro de dados do seu site) na rede global do Cloudflare com mais de 260 centros de dados. Quando os visitantes acessam seu site, o conteúdo em cache é servido a partir do local mais próximo, aumentando significativamente o desempenho e a velocidade do site em até 40%.
Cache de objetos
Adicionar um cache de objeto persistente, como o Redis, na frente do seu banco de dados, você pode aumentar o desempenho e reduzir a necessidade de threads PHP. Sem o cache de objetos, as consultas ao banco de dados MySQL são executadas para cada solicitação, mesmo quando se trata da mesma consulta e dos mesmos resultados.
O Redis armazena os resultados das consultas ao banco de dados na RAM para que o PHP possa obter esses resultados sem executar a consulta novamente. Eliminar a necessidade de consultas repetitivas ao banco de dados permite que os threads PHP conservem recursos e atendam às solicitações de forma mais eficiente.
Você pode adicionar o cache do Redis ao seu site com nosso complemento de cache do Redis.
Otimização de código
Certifique-se de que o código do seu site esteja otimizado para que seja o mais eficiente possível. Isso se aplica ao código personalizado, ao código do tema e ao código do plugin. Se você não tiver certeza, recomendamos que peça a um desenvolvedor para analisar o código do seu site.
Código personalizado
Se o site contiver trechos de código personalizado em plugins ou no tema, certifique-se de que são realmente necessários e bem escritos.
Plugins
Analise os plugins usados no site e verifique se são realmente necessários, não duplicam funcionalidades e são a melhor opção para a finalidade que cumprem. Se algum plugin não for compatível com a versão mais recente do WordPress e PHP, pode ser o momento de considerar outras opções. Se houver plugins no site que não estão sendo usados, recomendamos removê-los.
Tema
Use um tema leve e de bom desempenho. Evite temas que contenham funcionalidades que sejam melhor implementadas por meio de plugins separados (por exemplo, SEO, filtragem de pesquisa, campos personalizados, controles deslizantes/apresentação de slides de imagens, etc.) ou que não sejam necessários para o seu site.
Atualize o PHP
Use a versão mais recente do PHP para obter um desempenho mais rápido. Os benchmarks de PHP mostram que cada versão do PHP é mais rápida do que a anterior.
Habilite o CDN da Kinsta
Ao habilitar o CDN da Kinsta, proporciona outro aumento de eficiência e otimização para o site. O CDN da Kinsta é o nosso CDN HTTP/3 de alto desempenho alimentado pelo Cloudflare, que é fornecido a você sem nenhum custo adicional. Com ele ativado, seu site pode servir ativos estáticos a partir de locais em todo o mundo.
Consulte um especialista em desempenho
Se você estiver familiarizado com a otimização de sites, esta é uma etapa opcional. Um especialista pode ajudar você a analisar todos os aspectos dos seus sites, identificar gargalos e implementar soluções.