PHP

PHP Workers

Os PHP Workers processam o código PHP de um site. Isso inclui a criação de páginas, o processamento de tarefas em segundo plano, a consulta ao banco de dados, etc.

Uma maneira de pensar nos PHP Workers é como se fossem funcionários de uma loja. Cada funcionário só pode atender a uma solicitação por vez. Se houver mais clientes do que funcionários, esses clientes (processos) terão de fazer fila e esperar que o próximo funcionário disponível atenda à sua solicitação.

Os PHP Workers são especialmente importantes quando um site não possui ou não pode armazenar em cache grande parte do seu conteúdo. Sites mais dinâmicos tendem a necessitar de mais PHP Workers. Conteúdos armazenados em cache não precisam de PHP Workers; eles se tornam essenciais apenas quando o site precisa acessar o banco de dados para buscar ou modificar informações.

Quando se trata de desempenho no WordPress, mais PHP Workers não significam automaticamente um melhor desempenho; há uma série de fatores que você deve considerar:

  • Cache: Um cache eficaz pode reduzir a carga de trabalho nos PHP Workers ao servir conteúdo cacheado em vez de gerá-lo dinamicamente para cada solicitação. Isso pode melhorar significativamente o desempenho, especialmente para recursos frequentemente acessados.
  • Hardware: Os recursos de hardware disponíveis no servidor, como CPU, memória (RAM) e velocidade do disco, impactam diretamente no desempenho dos PHP Workers. Recursos insuficientes podem levar a tempos de processamento mais lentos e a um desempenho degradado.
  • Configuração do Servidor Web: A configuração do servidor web e sua interação com o PHP podem influenciar o desempenho do worker.
  • Velocidade do Banco de Dados: Aplicativos PHP frequentemente recuperam dados do banco de dados MySQL para renderizar conteúdo dinâmico. A velocidade com que os dados são recuperados é influenciada por aspectos como a organização do banco de dados, a otimização das consultas e o desempenho do servidor de banco de dados. Isso impacta diretamente no funcionamento dos aplicativos PHP.
  • Versão do PHP: Versões mais recentes do PHP podem resultar em um melhor desempenho dos PHP Workers devido a melhorias 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 voltadas para maximizar o desempenho do PHP e minimizar as solicitações PHP:

  • Oferecemos cache de página tanto no CDN quanto no nível do 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 PHP Workers do seu site a funcionarem de maneira mais eficiente.
  • Nossa infraestrutura escalável garante que os PHP Workers do seu site WordPress tenham recursos suficientes de CPU 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 necessário para os dados viajarem entre diferentes componentes da nossa infraestrutura, incluindo o servidor MySQL e os servidores web.
  • Fornecemos um servidor MySQL altamente otimizado hospedado localmente para reduzir a latência de rede e melhorar a velocidade de recuperação e processamento de dados.
  • No servidor MySQL, temos buffers InnoDB para ajudar a melhorar o desempenho do banco de dados reduzindo as operações de disco I/O. Os dados podem ser acessados mais rapidamente da memória do que do disco, aumentando a eficiência das operações de leitura e escrita e resultando em um melhor desempenho geral para o banco de dados MySQL.
  • Garantimos que a versão mais recente do PHP esteja sempre disponível para incorporar quaisquer melhorias de desempenho.

WordPress e PHP Workers

Uma solicitação não armazenada em cache em um site WordPress geralmente é mais ou menos assim. If you increase PHP workers, but the server needs more CPU and RAM to support those workers, this will create a bottleneck because the requests won’t be handled efficiently.

  1. Um visitante visita uma página ou executa uma ação em uma página (por exemplo, adicionar algo a um carrinho, enviar um formulário, etc.).
  2. O servidor web (Nginx aqui na Kinsta) recebe essa solicitação.
  3. O Nginx passa a solicitação para o PHP.
  4. O PHP consulta o banco de dados MySQL e obtém as informações de que precisa ou faz as atualizações necessárias.
  5. Em seguida, o PHP usa os arquivos PHP do seu tema (e quaisquer arquivos de plugin, se aplicável) para gerar uma página HTML.
  6. O PHP envia a página HTML renderizada de volta para o servidor web.
  7. A página é exibida para o visitante.

No processo mencionado, a Etapa 4 é a que mais demanda tempo e recursos (CPU e RAM). Um site otimizado, com código PHP e consultas ao banco de dados eficientes, pode executar essa etapa rapidamente.

Por outro lado, um código PHP mal elaborado ou não otimizado e/ou um grande número de consultas ineficientes ao banco de dados resultarão em um tempo de processamento muito maior para a Etapa 4. As solicitações que levam mais tempo para serem processadas ocupam os PHP Workers por períodos mais extensos.

Estimativa do número de PHP Workers necessários

O número de workers de que um site precisa depende de vários fatores, como: o grau de dinamismo do site, a otimização do código do site (a velocidade com que as solicitações podem ser processadas) e o tipo de tráfego que o site recebe. Um site otimizado processa as solicitações rapidamente, liberando os PHP Workers para a próxima solicitação na fila.

Sites dinâmicos, como lojas de eCommerce, fóruns, plataformas de aprendizado e sites de membros, frequentemente necessitam de mais PHP Workers do que sites estáticos, como aqueles de apresentação de empresas. Adicionalmente, quanto mais acessado for um site, maior será a necessidade de PHP Workers.

Planos da Kinsta e PHP Workers

A seguinte tabela mostra quantos PHP Workers estão incluídos em cada plano na Kinsta:

PlanoPHP workers
Starter2 PHP workers
Pro2 PHP Workers por site
Business 14 PHP Workers por site
Business 24 PHP Workers por site
Business 36 PHP Workers por site
Business 46 PHP Workers por site
EnterpriseA partir de 8 PHP Workers por site
Plano para um único site6 PHP Workers
Plano para Agência 6 PHP Workers por site

Também oferecemos planos personalizados, nos quais você pode especificar quantos PHP Workers necessita. Para mais informações, contate nossa equipe de vendas.

PHP Workers, CPU e RAM

Quando você adiciona PHP workers, os recursos de CPU e RAM devem ser levados em conta. Se você aumentar os PHP Workers, mas o servidor precisar de mais CPU e RAM para suportar esses PHP Workers, isso criará um gargalo porque as solicitações não serão tratadas de forma eficiente.

Aqui na Kinsta, nossos contêineres LXD personalizados são configurados com muitos recursos de CPU e RAM. Além disso, ao usar máquinas virtuais C2 e C3D otimizadas para computação e equipadas com as CPUs mais rápidas do Google Cloud, ajudamos os PHP workers do seu site a serem executados com mais eficiência. Nossa infraestrutura dimensionável garante que os PHP workers do seu site WordPress tenham recursos de CPU suficientes para operar com desempenho máximo.

Identificação de problemas de desempenho relacionados ao PHP Workers

Se muitas solicitações se acumularem na fila devido a um grande fluxo de solicitações, processos de longa execução ou uma combinação de ambos, o site poderá ter problemas de desempenho que podem resultar em erros 502 ou 504.

O uso de ferramentas como a ferramenta APM da Kinsta e o plugin Query Monitor pode ajudar você a identificar problemas de desempenho e consultas lentas. Também recomendamos que você trabalhe com um especialista em desempenho qualificado para diagnosticar os problemas.

Clique no botão Habilitar APM para habilitá-lo no MyKinsta.
Clique no botão Habilitar APM para habilitá-lo no MyKinsta.

Limite de PHP Workers

Você pode acessar o gráfico do limite de PHP Workers em MyKinsta > Sites WordPress > nome do site > Análise > Desempenho > Limite de PHP Worker. Se um PHP worker não tiver nada para fazer por 10 segundos contínuos, o processo do PHP Worker terminará automaticamente. Assim que for necessário novamente, o processo do PHP Worker será recriado instantaneamente. Este gráfico mostra quantas vezes o número máximo de PHP Workers alocados foi atingido no seu site.

Por exemplo, se você tem um plano Business 1, isso permite um máximo de 4 processos de PHP Workers. Se 3 PHP Workers estiverem em uso e outra solicitação for feita ao seu site que requer um PHP Worker, quando o PHP Worker é criado, ele atinge o número máximo de 4 PHP Workers e é registrado como um incidente onde o limite de PHP Worker foi atingido.

Isso pode fornecer apenas uma imagem parcial da atividade do seu PHP Worker, pois isso registra apenas o número de vezes que o limite de PHP Worker foi atingido e não quanto tempo todos os PHP Workers estavam em uso.

Por exemplo, se o seu site experimentar um aumento no tráfego, todos os PHP Workers podem permanecer constantemente ocupados durante uma hora inteira sem tempo de inatividade e, portanto, não terminam em absoluto durante essa hora. Isso só seria registrado como uma instância do limite de PHP Worker sendo atingido e, portanto, pode parecer que os PHP Workers não estavam 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 permitindo que um PHP Worker fique inativo por 10 segundos, ele terminará automaticamente. No entanto, se o PHP Worker for necessário novamente em outro minuto, o número máximo de PHP Workers seria novamente atingido, resultando em outro registro de limite de PHP Worker.

Se você está investigando o desempenho do site e determinando se seu site está usando continuamente seus PHP Workers, você pode monitorar a atividade do PHP Worker usando ferramentas em uma sessão SSH. Por exemplo, o seguinte comando personalizado monitora o número de PHP Workers 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 deste comando, pressione CMD + C ou CTRL + C e solte ambos os teclas.

Limite de PHP worker.
Limite de PHP worker.

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.

Cache - gráfico de componentes do cache.
Cache – gráfico de componentes do cache.
Cache - principais desvios de cache.
Cache – principais desvios de cache.

Reduza e otimize o uso do PHP Worker

Armazenamento em cache

O armazenamento em cache é seu melhor amigo quando se trata de otimizar seu site e reduzir o número de PHP Workers necessários. Lembre-se de que os PHP Workers não são necessários para o conteúdo em cache, portanto, armazene em cache tudo o que você 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.

Cache de objetos

Ao adicionar um cache de objeto persistente, como o Redis, no seu banco de dados, você pode aumentar o desempenho e reduzir a necessidade de PHP workers. 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. A eliminação da necessidade de consultas repetitivas ao banco de dados permite que os PHP Workers conservem recursos e atendam às solicitações com mais eficiência.

Confira nossos complementos premium para saber mais sobre como adicionar o cache do Redis ao seu site.

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 seu site contiver trechos de código personalizado em plugins ou no tema, verifique se eles são realmente necessários e estão bem escritos.

Plugins

É crucial realizar uma avaliação detalhada dos plugins utilizados em seu site para garantir que eles sejam essenciais, não dupliquem funcionalidades e representem a melhor escolha para as necessidades que visam suprir. Plugins redundantes ou incompatíveis com as versões mais recentes do WordPress e do PHP podem não apenas comprometer o desempenho do site, mas também a segurança.

Tema

Utilize um tema leve e de alto desempenho. Evite temas que contenham funcionalidades que são melhor implementadas por meio de plugins separados (por exemplo, SEO, filtragem de pesquisa, campos personalizados, sliders de imagens/apresentação de slides, etc.) ou que não são necessárias 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, você estará aumentando a eficiência e a otimização do seu site. O CDN da Kinsta é o nosso CDN HTTP/3 de alto desempenho alimentado pelo Cloudflare, fornecido a você sem nenhum custo adicional. Com ele ativado, seu site poderá servir ativos estáticos 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.

Reinicie o PHP

Na Kinsta, temos um recurso incrível que chamamos de PHP autorregenerativo. Isso é útil se você receber um erro 502 ou se alguma outra coisa der errado. Se o PHP ficar inativo por qualquer motivo, nosso sistema tentará reiniciá-lo automaticamente. Em muitos casos, isso é tudo o que é necessário e você está pronto para começar!

Em ocasiões raras, pode ser um problema mais grave. Nosso sistema registra automaticamente essa ocorrência para que nossa equipe de administração de sistemas (sysadmin) possa verificar. Caso contrário, você ainda tem a opção de reiniciar o PHP para qualquer um dos seus sites individualmente com apenas um simples clique de um botão no MyKinsta.

Como reiniciar o PHP manualmente

Para reiniciar o PHP em seu site WordPress, siga as etapas abaixo.

  1. Faça login no MyKinsta.
  2. Vá para Sites WordPress e selecione o site no qual você gostaria de reiniciar o PHP.
  3. Vá para a aba Ferramentas e encontre a seção Reiniciar PHP.
  4. Clique no botão Reiniciar PHP.
Reinicie o PHP no MyKinsta.
Reinicie o PHP no MyKinsta.

Para reiniciar o PHP levará cerca de 5 a 10 segundos e você receberá uma notificação na parte inferior da tela quando estiver concluído.

Observação: Você também precisará excluir o cache do seu site para ver as alterações.

Limites de PHP da Kinsta

Como um serviço gerenciado de WordPress, dispomos das configurações ideais de PHP configuradas para operar de maneira otimizada com sites WordPress. Caso você tenha requisitos específicos de PHP, sinta-se à vontade para entrar em contato com nossa equipe de suporte para discutir suas necessidades.

A Kinsta oferece PHP 8.0, 8.1, 8.2 e 8.3. Essas são as configurações padrão do PHP:

  • memory_limit = 256M
  • post_max_size = 128M
  • tamanho_max_de_arquivos_de_upload = 128M
  • max_input_vars = 10000
  • max_execution_time = 300

Dependendo do seu plano WordPress, você poderá aumentar esses valores, se necessário. Entre em contato com nossa equipe de suporte para saber quais opções estão disponíveis para você.

Limite de Memória PHP da Kinsta

O limite de memória PHP padrão da Kinsta é de 256MB, 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.

Se o seu site estiver configurado corretamente na Kinsta, você não deverá encontrar um erro de limite de memória. Se você vir esse erro, recomendamos verificar as configurações do WordPress para garantir que ele não tenha sido definido acidentalmente como muito baixo.

Se você estiver em um dos planos Business da Kinsta e quiser aumentar o limite de memória PHP de um site, poderá adquirir um complemento de limite de memória PHP. O complemento de limite de memória PHP aumenta o limite de memória de 256MB para 512MB a um custo de US$ 50 por site/mês. Para adquirir esse complemento, entre em contato com a equipe de gerenciamento de contas por meio do chat em tempo real no painel MyKinsta ou envie um e-mail para [email protected]. No momento, o complemento está disponível apenas para clientes do plano Business; se você estiver no plano Starter ou Pro, precisará fazer upgrade para um plano Business para comprar o complemento.

Verificação e alteração do limite de memória PHP

Para verificar o limite atual de memória PHP do WordPress, faça login no painel do WordPress do seu site e navegue até Tools > Site Health.

Vá para a aba Info e clique no ícone de seta ao lado da seção Server para expandir essa seção e visualizar seu limite de memória PHP.

Se o limite de memória for inferior a 256M, verifique o arquivowp-config.php para ver se o WP_MEMORY_LIMIT foi modificado e ajuste, se necessário.

Se o limite de memória for 256M, mas você estiver tendo problemas com a memória do PHP, recomendamos verificar e testar plugins e temas. Você pode usar um ambiente de teste para desativar e reativar plugins e temas com segurança para identificar a origem do uso da memória.

Se o erro persistir e não for possível identificar a origem, você pode iniciar um novo chat com nossa equipe de suporte para verificar os registros e descartar qualquer problema no servidor.

Atualização do PHP

Tornamos a atualização da versão PHP do seu site o mais fácil possível no MyKinsta.

Se seu site estiver pronto para atualizar o PHP, faça login no MyKinsta e vá para Sites WordPress > nome do site > Ferramentas.

Em PHP Engine, clique no menu suspenso e selecione a versão do PHP para a qual você deseja atualizar seu site.

Modifique o botão do mecanismo PHP no MyKinsta.
Modifique o botão do mecanismo PHP no MyKinsta.

No modal/pop-up Modificar versão do PHP que aparece, clique no botão Modificar versão do PHP para confirmar a alteração.

Modificar a versão do PHP.
Modificar a versão do PHP.

Ao final da atualização, o mecanismo PHP será reiniciado e o backend (painel WordPress) do seu site poderá ficar inativo por alguns segundos. O frontend do site permanecerá ativa, e os visitantes não sofrerão nenhum tempo de inatividade.

Enquanto o processo de atualização estiver em execução, você poderá navegar para outras partes do MyKinsta, mas algumas ações, como o gerenciamento de cache, ficarão indisponíveis até que o mecanismo PHP seja reiniciado.

Quando a atualização estiver concluída (geralmente em 3 minutos ou menos), você receberá uma notificação no MyKinsta informando que a atualização foi concluída.

Módulos PHP

Os seguintes módulos PHP são instalados em seu site WordPress na Kinsta por padrão:

  • bcmath
  • bz2
  • calendar
  • Core
  • ctype
  • curl
  • date
  • dom
  • exif
  • FFI
  • fileinfo
  • filter
  • ftp
  • gd
  • gettext
  • hash
  • iconv
  • igbinary
  • imagick
  • imap
  • intl
  • json
  • libxml
  • mbstring
  • mysqli
  • mysqlnd
  • openssl
  • pcntl
  • pcre
  • PDO
  • pdo_mysql
  • Phar
  • posix
  • readline
  • redis
  • Reflection
  • session
  • shmop
  • SimpleXML
  • soap
  • sockets
  • sodium
  • SPL
  • standard
  • sysvmsg
  • sysvsem
  • sysvshm
  • tokenizer
  • xml
  • xmlreader
  • xmlwriter
  • xsl
  • Zend OPcache
  • zip zlib

O ionCube não é instalado por padrão, mas pode ser habilitado se o seu site estiver executando o PHP 8.1 em MyKinsta > WordPress Sites > nome do site > Ferramentas > ionCube Loader > Habilitar.

Se você tiver dúvidas sobre um módulo PHP específico não incluído na lista acima, entre em contato com a equipe de suporte da Kinsta.

Este artigo foi útil?