[REWRITE] PHP

PHP Workers

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

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

Os PHP workers realmente entram em ação quando um site não armazena ou não pode armazenar em cache a maior parte do seu conteúdo. Quanto mais dinâmico for um site, mais PHP workers provavelmente precisará. O conteúdo armazenado em cache não requer PHP workers; eles só são realmente necessários quando o site precisa consultar o banco de dados para obter ou alterar informações.

Quando se trata de desempenho de WordPress, mais PHP workers não significam automaticamente melhor desempenho; há vários fatores que você deve considerar:

  • Cache: um armazenamento em cache eficaz pode reduzir a carga de trabalho dos PHP workers ao servir 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 PHP worker. 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: Os aplicativos PHP frequentemente recuperam dados de bancos de dados MySQL para renderizar conteúdo dinâmico. A velocidade com que os dados são recuperados é influenciada por fatores como a organização do banco de dados, como as consultas estão otimizadas e a qualidade do desempenho do servidor do banco de dados. Isso afeta diretamente o desempenho dos aplicativos PHP.
  • Versão do PHP: As versões mais recentes do PHP geralmente resultam em melhor desempenho do PHP worker 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ágina nos níveis de CDN e servidor, com regras personalizáveis para garantir a máxima eficiência do cache.
  • Usamos servidores premium no GCP (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 serem executados com mais eficiência.
  • Nossa infraestrutura escalável garante que os PHP workers 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 GCP, 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 melhorar o desempenho do banco de dados, reduzindo as operações de I/O de disco. Os dados podem ser acessados mais rapidamente da memória do que 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.
  • Asseguramos que a versão mais recente do PHP esteja sempre disponível para incorporar quaisquer aprimoramentos de desempenho.

PHP workers vs. limite de memória do PHP

O número de PHP workers não deve ser confundido com o limite de memória do PHP. PHP workers são processos PHP individuais que lidam com solicitações web recebidas, enquanto o limite de memória do PHP especifica a quantidade máxima de memória (RAM) que um único script PHP pode usar durante a execução.

Os PHP workers gerenciam a simultaneidade processando várias solicitações ao mesmo tempo, enquanto o limite de memória do PHP gerencia a alocação de recursos restringindo o uso de memória de scripts individuais. Isso impede que um único script use toda a memória disponível do servidor.

Os limites de memória do PHP são importantes para scripts que exigem muita memória, como os que realizam grandes consultas a bancos de dados, lidam com grandes uploads de arquivos ou executam cálculos complexos. Se você encontrar erros de limite de memória em seu site, aumentar o número de PHP workers não resolverá esse problema. Em vez disso, você precisa verificar seu limite de memória e, se necessário, aumentá-lo ou adquirir um complemento de limite de memória.

WordPress e PHP workers

Uma solicitação não armazenada em cache em um site WordPress geralmente é mais ou menos assim:

  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 (o Nginx, aqui na Kinsta) recebe essa solicitação.
  3. O Nginx passa a solicitação ao 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 descrito acima, a Etapa 4 é a que consome mais tempo e recursos (CPU e RAM). Um site bem otimizado com código PHP e consultas a banco de dados eficientes processará essa etapa com bastante rapidez.

Por outro lado, um código PHP mal escrito ou não otimizado e/ou muitas consultas ineficientes ao banco de dados levarão muito mais tempo para passar pela Etapa 4. As solicitações que demoram mais para serem processadas monopolizam os operadores de PHP por períodos mais longos.

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, de aprendizado e de membros, geralmente precisam de mais PHP workers do que sites estáticos, do tipo brochura. Além disso, quanto mais movimentado for um site, mais PHP workers normalmente precisará.

Planos Kinsta e PHP workers

A tabela a seguir mostra quantos PHP workers estão incluídos em cada plano da Kinsta:

PlanoPHP workers
Starter2 PHP workers
Pro2 PHP workers/site
Business 14 PHP workers/site
Business 24 PHP workers/site
Business 36 PHP workers/site
Business 46 PHP workers
Business 1
Site único
6 PHP workers
Business 2
Site único
6 PHP workers
Business 3
Site único
8 PHP workers
Business 4
Site único
8 PHP workers
EnterpriseA partir de 8 PHP workers/site
Plano para agênciaA partir de 6 PHP workers/site

Também oferecemos planos personalizados em que você pode informar de quantos PHP workers precisa. Para obter mais informações, entre em contato com nossa equipe de vendas.

PHP workers, CPU e RAM

Ao adicionar PHP workers, você deve levar em conta os recursos de CPU e RAM. Se você aumentar o número de PHP workers, mas o servidor precisar de mais CPU e RAM para dar suporte a esses workers, isso criará um gargalo, porque as solicitações não serão tratadas com eficiência.

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 ser 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.

Identifique problemas de desempenho relacionados aos 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á-la no MyKinsta.
Clique no botão Habilitar APM para habilitá-la no MyKinsta.

Limite de PHP worker

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

Por exemplo, se você tiver um plano Business 1, ele permite um máximo de 4 processos de PHP worker. Se 3 PHP workers estiverem em uso e outra solicitação for feita ao seu site que exija um PHP worker, quando o PHP worker for criado, atingirá o número máximo de 4 PHP workers e será registrado como um incidente em que o limite de PHP workers foi atingido.

Isso pode lhe dar apenas uma visão parcial da atividade do seu PHP worker, pois registra apenas o número de vezes que o limite de PHP workers é atingido, e não por quanto tempo todos os PHP workers estiveram em uso.

Por exemplo, se o seu site tiver um aumento no tráfego, todos os PHP workers poderão permanecer ocupados de forma consistente 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 PHP workers foi 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 que permita que um PHP worker fique ocioso por 10 segundos, ele será encerrado automaticamente. No entanto, se o PHP worker for necessário novamente em outro minuto, o número máximo de PHP workers será atingido novamente, resultando no registro de outro limite de PHP workers.

Se você estiver investigando o desempenho do site e determinando se ele está usando continuamente seus PHP workers, poderá monitorar a atividade dos PHP workers usando ferramentas em uma sessão SSH. Por exemplo, o comando personalizado a seguir monitora o número de PHP workers ativos a cada 0,3 segundo:

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 do PHP worker.
Limite do PHP worker.

Análise de cache

A seção de análise de cache no 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 de cache.
Cache — gráfico de componentes do cache.
Cache — principais desvios do cache.
Cache — principais desvios do cache.

Reduzir e otimizar o uso do PHP worker

Armazenamento em cache

O 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 pra 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, na frente do 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 Redis ao seu site.

Otimização de código

Certifique-se de que o código do seu site esteja otimizado para ser 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 revisar o código do seu site.

Código personalizado

Se o seu site contiver snippets de código personalizado em plugins ou no tema, verifique se são realmente necessários e estão bem escritos.

Plugins

Dê uma boa olhada nos plugins usados no site e verifique se são realmente necessários, não duplicam recursos e são a melhor opção para a necessidade que atendem. Se algum plugin não for compatível com a versão mais recente do WordPress e do PHP, talvez seja hora de considerar outras opções. Se você tiver plugins em seu site que não estejam sendo usados, é recomendável removê-los.

Tema

Use um tema leve e de bom desempenho. Evite temas que contenham funcionalidades que sejam mais bem implementadas por meio de plugins separados (por exemplo, SEO, filtragem de pesquisa, campos personalizados, apresentações de slides 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. 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 ajudá-lo a analisar todos os aspectos dos seus sites, identificar gargalos e implementar soluções.

Reinicie o PHP

Se o PHP ficar inativo, nosso sistema registrará isso automaticamente para que nossa equipe de administração de sistemas (sysadmin) verifique. No entanto, você pode reiniciar manualmente o PHP para qualquer um dos seus sites individualmente com um simples clique em 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.

Observe que reiniciar o PHP levará cerca de 5 a 10 segundos. Você receberá uma notificação na parte inferior da tela quando isso for concluído.

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

Limites de PHP

Como um serviço gerenciado de WordPress, a Kinsta tem as configurações ideais de PHP configuradas para funcionar melhor com sites WordPress. Se você tiver requisitos específicos de PHP, sinta-se à vontade para entrar em contato com nossa Equipe de Suporte para discutir suas necessidades.

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

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

Talvez você possa aumentar esses valores, se necessário. Entre em contato com nossa Equipe de Suporte pra saber quais opções estão disponíveis para você.

Limite de memória PHP

Na Kinsta, o Limite de memória PHP de 256 MB é o padrão, 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 em excesso. 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 quiser aumentar o limite de memória PHP de um site, você pode comprar um complemento de limite de memória PHP. Esse complemento aumenta o limite de memória de 256 MB para 512 MB, ao custo de US$ 50 por site ao mês.

Para comprar esse complemento, no MyKinsta, vá para Sites WordPress > nome do site > Complementos e, em Memória PHP, clique em Alterar.

Entre em contato com o suporte na página Complementos para comprar o complemento de PHP.
Entre em contato com o suporte na página Complementos para comprar o complemento PHP.

Isso abre uma nova janela com as informações sobre preços; clique em Abrir chat para iniciar um chat com nossa equipe de gerenciamento de contas, que configurará o complemento pra você.

Informações sobre preços do complemento de memória PHP.
Informações sobre preços do complemento de memória PHP.

Você também pode entrar em contato com a equipe de gerenciamento de contas por meio do chat ao vivo no painel MyKinsta ou enviando um e-mail para [email protected].

Se você remover o complemento de limite de memória PHP e estiver nos primeiros 30 dias do seu plano de Hospedagem WordPress, uma taxa proporcional para o complemento será adicionada à sua próxima fatura para o período de tempo em que ele foi ativado. Se o seu plano de Hospedagem 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 WordPress.

Verificando e alterando seu limite de memória PHP

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

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

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

Se o limite de memória for 256 M, 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 você não conseguir identificar a origem, poderá abrir 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.

No MyKinsta, você pode atualizar a versão do PHP para um ou vários sites simultaneamente, incluindo sites de teste, na página Sites WordPress. Marque as caixas de seleção ao lado do(s) site(s) para o(s) qual(is) você deseja atualizar a versão do PHP, clique em Ações e escolha Alterar versão do PHP.

Selecione para quais ambientes você deseja atualizar o PHP.
Selecione para quais ambientes você deseja atualizar o PHP.

Selecione a versão para a qual você deseja atualizar e clique em Alterar versão do PHP.

Escolha a versão do PHP para a qual você deseja atualizar.
Escolha a versão do PHP para a qual você deseja atualizar.

Quando o processo for concluído, você verá uma mensagem de sucesso.

Você também pode atualizar a versão do PHP de um único site em Sites WordPress > nome do site > Ferramentas. Em Mecanismo PHP, clique no menu suspenso e selecione a versão do PHP para a qual você deseja atualizar seu site.

Botão Modificar o Mecanismo PHP no MyKinsta.
Botão Modificar o 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 do WordPress) do seu site poderá ficar inativo por alguns segundos. O frontend permanecerá ativo, 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 foi concluída.

Constantes PHP

As constantes PHP armazenam valores fixos que permanecem os mesmos em todo o seu site. Elas são automaticamente globais, o que é ideal para valores que precisam ser acessados em vários lugares.

Se você usar uma configuração não padrão do WordPress, como Bedrock ou Trellis, a Kinsta pode não conseguir localizar a variável DB_PASSWORD e, portanto, não conseguirá atualizar a senha do banco de dados quando você:

  • Adicionar um novo site clonando um ambiente existente
  • Adicionar um ambiente de teste clonando um ambiente existente
  • Colocar o ambiente de teste em produção
  • Restaurar um backup
  • Alterar a senha do banco de dados no MyKinsta

Para resolver esse problema, a Kinsta fornece a constante PHP SERVER_SECRET_DB_PASSWORD para uso nos servidores da Kinsta. Quando você define essa constante no arquivo config.php, o MyKinsta a utiliza para identificar a senha do banco de dados do seu site. Você pode defini-la da seguinte forma:

define('DB_PASSWORD', defined('SERVER_SECRET_DB_PASSWORD') ? SERVER_SECRET_DB : 'asdijfhkjasdbfkjhbajiksd' );

Você pode definir as seguintes constantes PHP para usar com os servidores da Kinsta:

  • SERVER_SECRET_DB_USER
  • SERVER_SECRET_DB_PASSWORD
  • SERVER_SECRET_DB_HOST
  • SERVER_SECRET_DB_NAME

Por exemplo, você pode definir as constantes no arquivo config.php da seguinte forma:

define('DB_NAME', defined('SERVER_SECRET_DB_NAME') ? SERVER_SECRET_DB_NAME : 'newsitetest');
define('DB_USER', defined('SERVER_SECRET_DB_USER') ? SERVER_SECRET_DB_USER : 'newsitetest');
define('DB_PASSWORD', defined('SERVER_SECRET_DB_PASSWORD') ? SERVER_SECRET_DB : 'asdijfhkjasdbfkjhbajiksd' );
define('DB_HOST', defined('SERVER_SECRET_DB_HOST') ? SERVER_SECRET_DB_HOST : 'localhost');

Como alternativa, você pode definir as constantes da seguinte forma:

define('DB_NAME',SERVER_SECRET_DB_NAME);
define('DB_USER',SERVER_SECRET_DB_USER);
define('DB_PASSWORD',SERVER_SECRET_DB_PASSWORD);
define('DB_HOST',SERVER_SECRET_DB_HOST);

Módulos PHP

Os seguintes módulos PHP são instalados no 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 PHP 8.1, 8.2 ou 8.3 no MyKinsta > Sites WordPress > 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?