{"id":16181,"date":"2025-12-24T11:51:59","date_gmt":"2025-12-24T10:51:59","guid":{"rendered":"https:\/\/webhosting.de\/php-handler-vergleich-performance-hosting-optimus-cache\/"},"modified":"2025-12-24T11:51:59","modified_gmt":"2025-12-24T10:51:59","slug":"comparativo-de-php-handler-desempenho-alojamento-optimus-cache","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pt\/php-handler-vergleich-performance-hosting-optimus-cache\/","title":{"rendered":"Compara\u00e7\u00e3o de manipuladores PHP: efeitos no desempenho do alojamento web"},"content":{"rendered":"<p>Esta compara\u00e7\u00e3o entre manipuladores PHP mostra como mod_php, CGI, FastCGI, PHP-FPM e LSAPI <strong>Desempenho<\/strong> da sua hospedagem \u2013 desde a carga da CPU at\u00e9 as lat\u00eancias de cauda. Explico concretamente qual escolha fazer no WordPress, WooCommerce e picos de tr\u00e1fego. <strong>Tempo de carregamento<\/strong> reduz e, ao mesmo tempo, poupa recursos.<\/p>\n\n<h2>Pontos centrais<\/h2>\n<ul>\n  <li><strong>PHP-FPM<\/strong> Escala de forma mais eficiente do que mod_php e FastCGI.<\/li>\n  <li><strong>LSAPI<\/strong> oferece os melhores valores no LiteSpeed.<\/li>\n  <li><strong>Isolamento<\/strong> por utilizador aumenta a seguran\u00e7a.<\/li>\n  <li><strong>OPcache<\/strong> e Redis reduzem as lat\u00eancias.<\/li>\n  <li><strong>P95\/P99<\/strong> mostra a experi\u00eancia real do utilizador.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/php-handler-serverraum-4731.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Como funcionam os manipuladores PHP<\/h2>\n\n<p>Um manipulador PHP liga o servidor web ao interpretador e controla <strong>Processos<\/strong>, mem\u00f3ria e E\/S para cada solicita\u00e7\u00e3o. O CGI inicia um novo processo para cada solicita\u00e7\u00e3o e recarrega as configura\u00e7\u00f5es, o que gera sobrecarga e aumenta o <strong>Lat\u00eancia<\/strong> Aumentado. Variantes modernas como FastCGI, PHP-FPM ou LSAPI mant\u00eam os trabalhadores dispon\u00edveis de forma persistente, poupando assim tempo de arranque, mudan\u00e7as de contexto e ciclos de CPU. O OPcache permanece na mem\u00f3ria, o que significa que o bytecode n\u00e3o precisa de ser compilado todas as vezes e as p\u00e1ginas din\u00e2micas respondem mais rapidamente. Ao mesmo tempo, a gest\u00e3o de processos decide quantas solicita\u00e7\u00f5es simult\u00e2neas podem ser executadas, como as prioridades s\u00e3o definidas e como os picos de carga podem ser amortecidos.<\/p>\n\n<h2>Compara\u00e7\u00e3o direta dos manipuladores mais comuns<\/h2>\n\n<p>A escolha do manipulador determina a <strong>Escalonamento<\/strong>, o modelo de seguran\u00e7a e os requisitos de RAM de uma aplica\u00e7\u00e3o. O mod_php integra o PHP no processo Apache e oferece tempos de resposta curtos, mas sofre de fraca <strong>Isolamento<\/strong> entre contas. O CGI separa os utilizadores de forma clara, mas consome muito tempo de CPU por pedido. O FastCGI reduz a sobrecarga, mas continua a ser menos eficiente do que um PHP-FPM bem ajustado. O LSAPI vai ainda mais longe quando o LiteSpeed est\u00e1 em uso e estabiliza especialmente as lat\u00eancias de cauda em muitas liga\u00e7\u00f5es simult\u00e2neas.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>manipulador<\/th>\n      <th>Desempenho<\/th>\n      <th>Seguran\u00e7a<\/th>\n      <th>Requisitos de RAM<\/th>\n      <th>Escalabilidade<\/th>\n      <th>Cen\u00e1rio operacional<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>mod_php<\/td>\n      <td>Elevado<\/td>\n      <td>Baixa<\/td>\n      <td>Baixa<\/td>\n      <td>M\u00e9dio<\/td>\n      <td>Pequenos sites, picos raros<\/td>\n    <\/tr>\n    <tr>\n      <td>CGI<\/td>\n      <td>Baixa<\/td>\n      <td>Elevado<\/td>\n      <td>Elevado<\/td>\n      <td>Baixa<\/td>\n      <td>Conte\u00fados est\u00e1ticos, testes<\/td>\n    <\/tr>\n    <tr>\n      <td>FastCGI<\/td>\n      <td>M\u00e9dio<\/td>\n      <td>M\u00e9dio<\/td>\n      <td>M\u00e9dio<\/td>\n      <td>M\u00e9dio<\/td>\n      <td>solu\u00e7\u00e3o provis\u00f3ria<\/td>\n    <\/tr>\n    <tr>\n      <td>PHP-FPM<\/td>\n      <td>Muito elevado<\/td>\n      <td>Elevado<\/td>\n      <td>Baixa<\/td>\n      <td>Elevado<\/td>\n      <td>Hospedagem partilhada, CMS<\/td>\n    <\/tr>\n    <tr>\n      <td>LSAPI<\/td>\n      <td>Mais alto<\/td>\n      <td>M\u00e9dio<\/td>\n      <td>Muito baixo<\/td>\n      <td>Muito elevado<\/td>\n      <td>Alto tr\u00e1fego, com\u00e9rcio eletr\u00f3nico<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/phphandler_vergleich_8372.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>PHP-FPM na pr\u00e1tica: processos, pools, ajuste<\/h2>\n\n<p>O PHP-FPM funciona com pools de trabalhadores que retiram as solicita\u00e7\u00f5es de uma fila e, assim, <strong>Picos de carga<\/strong> amortecer elegantemente. Eu defino um pool pr\u00f3prio para cada site, para que a configura\u00e7\u00e3o, os limites e o contexto do utilizador permane\u00e7am separados e o <strong>Seguran\u00e7a<\/strong> aumenta. Na pr\u00e1tica, configura\u00e7\u00f5es adaptativas como pm = dynamic ou ondemand s\u00e3o vantajosas, pois o n\u00famero de processos ativos se adapta \u00e0 demanda. \u00c9 fundamental dimensionar corretamente pm.max_children e os limites de tempo, para que a fila n\u00e3o cres\u00e7a e ainda haja reservas de RAM. Para come\u00e7ar, recomendo verificar os par\u00e2metros de forma estruturada; explico os detalhes do ajuste fino aqui: <a href=\"https:\/\/webhosting.de\/pt\/php-fpm-gestao-de-processos-pm-max-children-otimizar-nucleo\/\">Gest\u00e3o de processos PHP-FPM<\/a>.<\/p>\n\n<h2>LSAPI e LiteSpeed: valor m\u00e1ximo com alta simultaneidade<\/h2>\n\n<p>O LSAPI mant\u00e9m os processos PHP na mem\u00f3ria e reduz as mudan\u00e7as de contexto, permitindo que conte\u00fados din\u00e2micos sejam gerados com <strong>HTTP\/3<\/strong> e QUIC ainda mais suavemente. Sob carga total, a lat\u00eancia P95\/P99 permanece mais est\u00e1vel do que em muitas alternativas, o que <strong>Experi\u00eancia do utilizador<\/strong> visivelmente melhorado. Vejo regularmente mais consultas por segundo e TTFB mais curto nas p\u00e1ginas da loja e de conte\u00fado, especialmente quando o OPcache e o cache do servidor funcionam em conjunto. A vantagem n\u00e3o se reflete apenas nos valores m\u00e9dios, mas tamb\u00e9m em sess\u00f5es simult\u00e2neas, sess\u00f5es com falhas de cache e trabalhadores PHP \u201efrios\u201c. Quem quiser entender a diferen\u00e7a de arquitetura, leia a vis\u00e3o geral sobre <a href=\"https:\/\/webhosting.de\/pt\/litespeed-vs-nginx-arquitetura-desempenho-explicacao-speedboost\/\">LiteSpeed vs. Nginx<\/a> e, em seguida, decide sobre a pilha.<\/p>\n\n<h2>WordPress e WooCommerce: classificar corretamente os valores medidos<\/h2>\n\n<p>No WordPress, consigo um desempenho elevado com PHP 8.2 no FPM ou LSAPI. <strong>req\/s<\/strong>, enquanto o WooCommerce gera um pouco menos de solicita\u00e7\u00f5es por segundo devido a sess\u00f5es, l\u00f3gica do carrinho e mais acessos ao banco de dados. O teste s\u00f3 se torna significativo em condi\u00e7\u00f5es realistas. <strong>Tr\u00e1fego<\/strong> com acertos e falhas de cache misturados. CSS cr\u00edtico, cache de objetos e conex\u00f5es persistentes mudam o limite a partir do qual surgem gargalos. TTLs curtos para conte\u00fados alterados com frequ\u00eancia e chaves de cache diferenciadas para idioma, status do utilizador e tipo de dispositivo s\u00e3o particularmente \u00fateis. Assim, a p\u00e1gina permanece r\u00e1pida, embora forne\u00e7a conte\u00fados personalizados.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/php-handler-vergleich-performance-4762.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Seguran\u00e7a e isolamento: pools, contexto do utilizador, limites<\/h2>\n\n<p>Prefiro hospedagem multiusu\u00e1rio separada <strong>piscinas<\/strong> por conta, para que os direitos, caminhos e limites permane\u00e7am claramente separados. O mod_php partilha um contexto comum, o que <strong>Risco<\/strong> aumenta quando um projeto apresenta lacunas. O FPM ou o LSAPI com configura\u00e7\u00f5es por utilizador reduzem significativamente essa vulnerabilidade, pois os processos s\u00e3o executados sob o respetivo utilizador. Al\u00e9m disso, \u00e9 poss\u00edvel definir diferentes op\u00e7\u00f5es php.ini no n\u00edvel do projeto, sem afetar outros sites. Limites de recursos, como max_execution_time e memory_limit por pool, impedem que exce\u00e7\u00f5es sobrecarreguem o servidor.<\/p>\n\n<h2>Consumo de recursos e planeamento de RAM<\/h2>\n\n<p>Cada PHP Worker ocupa, dependendo do c\u00f3digo, extens\u00f5es e <strong>OPcache<\/strong>Mem\u00f3ria que varia significativamente em tamanho, por isso eu me\u00e7o a ocupa\u00e7\u00e3o real em vez de adivinhar. Ferramentas como ps, top ou systemd-cgtop mostram quanto RAM os trabalhadores ativos realmente ocupam e quando <strong>Troca<\/strong> amea\u00e7a. Em seguida, defino pm.max_children de forma conservadora, deixo espa\u00e7o para a base de dados, servidor web e servi\u00e7os de cache e observo a lat\u00eancia P95 abaixo do pico. Se sobrar reserva, aumento gradualmente o n\u00famero de filhos e verifico novamente. Assim, a capacidade total cresce de forma controlada, sem sobrecarregar o servidor.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/phphandlervergleich_nacht_3207.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Metodologia de medi\u00e7\u00e3o: do TTFB ao P99<\/h2>\n\n<p>N\u00e3o avalio apenas valores m\u00e9dios, mas principalmente <strong>P95<\/strong>\u2013 e lat\u00eancias P99, porque refletem a experi\u00eancia real sob carga. Uma pilha pode funcionar com um rendimento id\u00eantico e, mesmo assim, ter um desempenho pior em P99 se <strong>Filas de espera<\/strong> crescer. Por isso, testo caches frias e quentes, misturo pedidos de leitura e escrita e utilizo valores de concorr\u00eancia realistas. Sem o aquecimento do OPcache, interpreto os resultados com cautela, pois muitos sistemas ficam significativamente mais r\u00e1pidos ap\u00f3s algumas chamadas de aquecimento. S\u00f3 ap\u00f3s testes representativos \u00e9 que decido sobre os manipuladores, a estrat\u00e9gia de cache e os limites do processo.<\/p>\n\n<h2>Guia de decis\u00e3o para a escolha do manipulador<\/h2>\n\n<p>Para p\u00e1ginas pequenas com poucos logins, basta o mod_php ou um <strong>FPM<\/strong>-Configura\u00e7\u00e3o, desde que os aspetos de seguran\u00e7a sejam abordados. Se a simultaneidade aumentar, mudo para <strong>PHP-FPM<\/strong> com pools separadas por projeto e ativo o OPcache de forma consistente. Para lojas altamente din\u00e2micas e com muitas sess\u00f5es, prefiro o LiteSpeed com LSAPI para manter o P95 e o P99 baixos. Quem permanecer no Apache\/Nginx por motivos de pre\u00e7o ou arquitetura ter\u00e1 um \u00f3timo desempenho com o FPM bem ajustado. Em todos os casos, a medi\u00e7\u00e3o em condi\u00e7\u00f5es realistas \u00e9 mais importante do que benchmarks em um sistema vazio.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/php_handler_vergleich_4729.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Configura\u00e7\u00e3o pr\u00e1tica: cache, sess\u00f5es, limites de tempo<\/h2>\n\n<p>Aposte no OPcache com generosas <strong>Mem\u00f3ria<\/strong>-Aloca\u00e7\u00e3o, para que o bytecode raramente seja substitu\u00eddo, e transfira as sess\u00f5es, se poss\u00edvel, para <strong>Redis<\/strong>, para evitar bloqueios de ficheiros. Isso reduz os tempos de espera em logins simult\u00e2neos e p\u00e1ginas personalizadas. Para servi\u00e7os externos, defino tempos limite e disjuntores claros, para que as falhas n\u00e3o bloqueiem toda a solicita\u00e7\u00e3o. No n\u00edvel da aplica\u00e7\u00e3o, mantenho os TTLs do cache curtos o suficiente para manter a atualidade, mas longos o suficiente para uma alta taxa de acertos. Quem atinge regularmente os limites de trabalho encontra aqui uma introdu\u00e7\u00e3o: <a href=\"https:\/\/webhosting.de\/pt\/php-workers-hosting-bottleneck-guide-balance\/\">Equilibrar corretamente os PHP Workers<\/a>.<\/p>\n\n<h2>Compara\u00e7\u00e3o custo-benef\u00edcio e opera\u00e7\u00e3o<\/h2>\n\n<p>Eu classifico o <strong>Custos<\/strong> uma mudan\u00e7a em troca de ganhos mensur\u00e1veis em lat\u00eancia, rendimento e confiabilidade. A mudan\u00e7a do FastCGI para o PHP-FPM muitas vezes traz mais benef\u00edcios do que uma mudan\u00e7a no n\u00famero da vers\u00e3o secund\u00e1ria do PHP, porque <strong>Processo<\/strong>-Gest\u00e3o e cache atuam continuamente. O LSAPI vale a pena principalmente quando o LiteSpeed j\u00e1 est\u00e1 em uso e h\u00e1 muitos visitantes simult\u00e2neos. Quem mudar a pilha deve acompanhar de perto os registos e m\u00e9tricas e preparar caminhos de revers\u00e3o. Uma opera\u00e7\u00e3o A\/B planeada ao longo de v\u00e1rios dias fornece as informa\u00e7\u00f5es mais fi\u00e1veis.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/12\/php-handler-vergleich-5763.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Intera\u00e7\u00e3o entre servidores web: Apache-MPM, Nginx e Keep-Alive<\/h2>\n\n<p>Na pr\u00e1tica, n\u00e3o \u00e9 apenas o manipulador PHP que decide, mas tamb\u00e9m o modo do servidor web. O mod_php funciona com o Apache no <strong>prefork<\/strong>-MPM, mas bloqueia a utiliza\u00e7\u00e3o de modelos de eventos modernos. Quem deseja utilizar HTTP\/2, fases Keep-Alive mais longas e milhares de liga\u00e7\u00f5es de forma eficiente, deve optar pelo Apache. <strong>evento<\/strong> + PHP-FPM ou Nginx\/LiteSpeed como front-end. Consequ\u00eancia: o n\u00famero de PHP Workers necess\u00e1rios n\u00e3o depende do n\u00famero de liga\u00e7\u00f5es TCP, mas sim do n\u00famero real de <em>ao mesmo tempo<\/em> solicita\u00e7\u00f5es PHP em execu\u00e7\u00e3o. A multiplexa\u00e7\u00e3o HTTP\/2\/3 reduz, portanto, a sobrecarga de cabe\u00e7alhos no servidor web, mas n\u00e3o altera nada em pools PHP com dimens\u00f5es insuficientes.<\/p>\n\n<p>O Nginx normalmente encaminha as solicita\u00e7\u00f5es para o FPM atrav\u00e9s do FastCGI. Eu presto aten\u00e7\u00e3o a <strong>tempo_limite_de_leitura<\/strong>- e <strong>tempo_limite_de_envio<\/strong>Valores no proxy, caso contr\u00e1rio, ocorrer\u00e3o erros 502\/504 em upstreams pendentes, embora o PHP ainda esteja a funcionar. Em ambientes Apache, limito o Keep-Alive para que conex\u00f5es ociosas longas n\u00e3o ocupem o pool de threads. O LiteSpeed abstrai muito disso, mas s\u00f3 aproveita totalmente a sua vantagem com o LSAPI.<\/p>\n\n<h2>OPcache, JIT e pr\u00e9-carregamento: o que realmente ajuda<\/h2>\n\n<p>O OPcache \u00e9 obrigat\u00f3rio. Na pr\u00e1tica, eu dimensiono <strong>opcache.memory_consumption<\/strong> generoso (por exemplo, 192\u2013512 MB, dependendo da base de c\u00f3digo) e aumente <strong>opcache.max_accelerated_files<\/strong>, para evitar evictions. Para builds que raramente s\u00e3o implementadas, desativo <strong>validar_carimbos_de_data\/hora<\/strong> ou defina um valor mais alto <strong>revalidar_freq<\/strong>, para poupar chamadas do sistema. <strong>Pr\u00e9-carregamento<\/strong> pode acelerar os frameworks, mas tem um efeito especialmente significativo quando a estrutura de autoload \u00e9 consistente. O <strong>JIT<\/strong> O PHP raramente traz vantagens para cargas de trabalho web cl\u00e1ssicas e pode at\u00e9 consumir RAM; s\u00f3 o ativo quando benchmarks em condi\u00e7\u00f5es reais confirmam isso.<\/p>\n\n<h2>Gest\u00e3o de filas e contrapress\u00e3o<\/h2>\n\n<p>A maioria dos gargalos n\u00e3o ocorre na CPU, mas na <strong>fila de espera<\/strong>. Quando chegam mais pedidos do que os trabalhadores conseguem processar, a fila aumenta e a lat\u00eancia P95\/P99 dispara. Eu garanto que <strong>pm.max_children<\/strong> grande o suficiente para absorver picos t\u00edpicos, mas pequeno o suficiente para manter reserva de RAM. <strong>pm.max_requests<\/strong> Eu defino um valor moderado (por exemplo, 500\u20132000) para que os vazamentos de mem\u00f3ria n\u00e3o criem processos de longa dura\u00e7\u00e3o. O <strong>lista.backlog<\/strong> deve corresponder ao backlog do servidor web, caso contr\u00e1rio, o kernel interromper\u00e1 as liga\u00e7\u00f5es sob carga. Quem medir a taxa de chegada (solicita\u00e7\u00f5es por segundo) e o tempo m\u00e9dio de servi\u00e7o pode avaliar, com um simples c\u00e1lculo de capacidade, a partir de qual concorr\u00eancia a lat\u00eancia diminui.<\/p>\n\n<h2>Timeouts, uploads e long runners<\/h2>\n\n<p>Uploads longos ou chamadas API bloqueiam os trabalhadores. Eu defino limites claros: <strong>tempo_de_execu\u00e7\u00e3o_m\u00e1x<\/strong> e <strong>request_terminate_timeout<\/strong> no FPM, evito que pedidos defeituosos continuem a ser executados indefinidamente. Ao n\u00edvel do proxy, sincronizo <strong>tempo_limite_de_leitura_proxy<\/strong>\/<strong>fastcgi_read_timeout<\/strong> com os limites FPM, para evitar um 504 prematuro. Transmito grandes uploads, limito <strong>tamanho_m\u00e1ximo_do_post<\/strong> e <strong>tamanho_m\u00e1ximo_de_arquivo_para_upload<\/strong> rigorosamente e planeie pontos finais dedicados, para que o restante tr\u00e1fego n\u00e3o seja afetado. Para tarefas de longa dura\u00e7\u00e3o semelhantes ao cron, eu transfiro o trabalho para <strong>Tacos<\/strong> ou tarefas CLI, em vez de bloquear os trabalhadores front-end durante minutos.<\/p>\n\n<h2>Sess\u00f5es e bloqueio em detalhe<\/h2>\n\n<p>As sess\u00f5es PHP s\u00e3o, por predefini\u00e7\u00e3o, <strong>bloqueando<\/strong>. Um segundo pedido do mesmo utilizador aguarda at\u00e9 que o primeiro libere a sess\u00e3o \u2013 o que \u00e9 fatal para o WooCommerce, se houver chamadas Ajax em paralelo. Eu encerro os acessos de grava\u00e7\u00e3o da sess\u00e3o antecipadamente com <em>session_write_close()<\/em>, assim que n\u00e3o forem mais necess\u00e1rias altera\u00e7\u00f5es. Com o Redis como backend de sess\u00e3o, a lat\u00eancia de E\/S diminui, mas as regras de bloqueio continuam sendo importantes. Por tr\u00e1s dos balanceadores de carga, eu decido conscientemente entre sess\u00f5es fixas (simples, menos escal\u00e1veis) e padr\u00f5es sem estado com cache de objetos, para que a escalabilidade horizontal funcione corretamente.<\/p>\n\n<h2>Monitoriza\u00e7\u00e3o e resolu\u00e7\u00e3o de problemas<\/h2>\n\n<p>Sem telemetria, o ajuste \u00e9 uma tarefa cega. Eu ativo o estado FPM e os registos lentos por pool para ver os pontos de estrangulamento e identificar consultas que se destacam.<\/p>\n\n<pre><code>; por pool pm.status_path = \/status ping.path = \/ping ping.response = pong request_slowlog_timeout = 3s slowlog = \/var\/log\/php-fpm\/www-slow.log pm.max_requests = 1000\n<\/code><\/pre>\n\n<p>Se ocorrerem erros 502\/504, primeiro verifico: a fila FPM est\u00e1 cheia? H\u00e1 roubo de CPU ou troca? O tempo limite do servidor web est\u00e1 de acordo com os limites FPM? Uma olhadela em <em>smaps<\/em> por trabalhador mostra a ocupa\u00e7\u00e3o RSS real, enquanto <em>netstat<\/em>\/<em>ss<\/em> Detecta excessos de backlog. Para o OPcache, observo a taxa de acertos e o n\u00famero de revalida\u00e7\u00f5es para evitar evictions.<\/p>\n\n<h2>Contentores, sockets e limites de recursos<\/h2>\n\n<p>Em contentores, costumo usar <strong>TCP<\/strong> em vez de sockets Unix entre o servidor web e o FPM, para evitar limites de namespace e facilitar o balanceamento de carga. \u00c9 importante que haja consist\u00eancia <strong>cgroup<\/strong>Limites: se o contentor tiver apenas 1\u20132 GB de RAM, pm.max_children deve ser correspondentemente menor, caso contr\u00e1rio, o OOM-Killer ser\u00e1 acionado. As quotas de CPU influenciam significativamente o tempo de resposta; eu planeio uma margem e verifico a lat\u00eancia P95 abaixo do limite. As quest\u00f5es de NUMA e afinidade de n\u00facleo tornam-se relevantes em cargas muito elevadas, enquanto o LSAPI otimiza muito disso internamente em configura\u00e7\u00f5es LiteSpeed.<\/p>\n\n<h2>V\u00e1rias vers\u00f5es PHP e extens\u00f5es<\/h2>\n\n<p>Muitos hosts executam v\u00e1rias vers\u00f5es do PHP em paralelo. Eu isolo os pools por vers\u00e3o e mantenho <strong>Extens\u00f5es<\/strong> Enxuto. Cada m\u00f3dulo adicional aumenta a RAM por trabalhador e pode prolongar o tempo de inicializa\u00e7\u00e3o. Eu removo consistentemente as extens\u00f5es n\u00e3o utilizadas; isso geralmente traz mais benef\u00edcios do que um pequeno aumento no pm.max_children. Durante a atualiza\u00e7\u00e3o, eu planeio fases curtas de aquecimento para o OPcache, para que, ap\u00f3s a implementa\u00e7\u00e3o, nem todos os utilizadores experimentem inicializa\u00e7\u00f5es a frio ao mesmo tempo.<\/p>\n\n<h2>Dieta de RAM e planeamento realista da capacidade<\/h2>\n\n<p>Em vez de valores fixos, determino a necessidade m\u00e9dia e m\u00e1xima de RAM por trabalhador com tr\u00e1fego ao vivo. A partir disso, deduzo: (RAM dispon\u00edvel \u2013 sistema\/banco de dados\/caches) \/ RAM por trabalhador = <strong>m\u00e1xima<\/strong> pm.max_children adequado. Al\u00e9m disso, mantenho uma reserva de 15\u201325 % para picos, cache do kernel e picos imprevistos. Se a aplica\u00e7\u00e3o aumentar esporadicamente a mem\u00f3ria, reduzo o limite ou diminuo o pm.max_requests para reciclar os processos com mais frequ\u00eancia.<\/p>\n\n<h2>Estrat\u00e9gia de teste: carga reprodut\u00edvel e padr\u00f5es reais<\/h2>\n\n<p>Eu uso perfis de teste que misturam caches frios e quentes, combinam GET\/POST e aumentam gradualmente a concorr\u00eancia. Importante: s\u00f3 com o OPcache ativo e tempos de reflex\u00e3o realistas \u00e9 que consigo ver se o sistema permanece est\u00e1vel sob o comportamento de utiliza\u00e7\u00e3o. Um aumento gradual ao longo de v\u00e1rios minutos evita picos artificiais no arranque. A avalia\u00e7\u00e3o centra-se no TTFB e no P95\/P99, e n\u00e3o apenas no RTT m\u00e9dio ou no req\/s puro.<\/p>\n\n<h2>Erros comuns na pr\u00e1tica<\/h2>\n\n<ul>\n  <li>Muitos 504 abaixo do pico: fila FPM cheia, backlog muito pequeno, tempos limite no proxy mais curtos do que no FPM.<\/li>\n  <li>Gagueira nas implementa\u00e7\u00f5es: substitui\u00e7\u00f5es OPcache, falta de aquecimento, opcache.memory_consumption muito pequeno.<\/li>\n  <li>Bons valores m\u00e9dios, mau P99: demasiados processos de longa dura\u00e7\u00e3o (I\/O, APIs externas), falta de interrup\u00e7\u00e3o de circuito.<\/li>\n  <li>CPU elevada, req\/s baixo: bloqueios de sess\u00e3o ou consultas \u00e0 base de dados n\u00e3o armazenadas em cache, que limitam a s\u00e9rie.<\/li>\n<\/ul>\n\n<h2>Seguran\u00e7a operacional e revers\u00e3o<\/h2>\n\n<p>Qualquer altera\u00e7\u00e3o no manipulador ou nos par\u00e2metros do pool \u00e9 executada com <strong>Bandeiras de carater\u00edsticas<\/strong> ou gradualmente. Eu mantenho os erros e os registos de lentid\u00e3o, P95 e taxa de erros sob vigil\u00e2ncia e defino uma revers\u00e3o clara, caso as m\u00e9tricas se alterem. Um segundo pool com vers\u00e3o id\u00eantica, mas par\u00e2metros diferentes, permite uma mudan\u00e7a r\u00e1pida de A\/B sem tempo de inatividade. Sob carga total, uma redu\u00e7\u00e3o curta e autom\u00e1tica da concorr\u00eancia (contrapress\u00e3o) \u00e9 mais eficaz do que iniciar novos trabalhadores de forma descontrolada.<\/p>\n\n<h2>Brevemente resumido<\/h2>\n\n<p>Para sites din\u00e2micos com muitos utilizadores simult\u00e2neos, prefiro <strong>LSAPI<\/strong> no LiteSpeed, enquanto o PHP-FPM no Apache ou Nginx oferece o melhor <strong>Todo-o-terreno<\/strong> O mod_php continua a ser um caso especial para projetos muito simples, sem isolamento rigoroso. O importante \u00e9 realizar testes realistas com OPcache aquecido, limites de pool razo\u00e1veis e cache limpo. Quem reduz a lat\u00eancia de forma fi\u00e1vel mede P95\/P99 e reage primeiro a problemas de cauda, em vez de valores m\u00e9dios. Assim, uma aplica\u00e7\u00e3o obt\u00e9m respostas visivelmente mais r\u00e1pidas e mais reservas para picos de tr\u00e1fego.<\/p>","protected":false},"excerpt":{"rendered":"<p>A compara\u00e7\u00e3o entre os manipuladores PHP mostra como o PHP-FPM, o LSAPI e o CGI influenciam o desempenho do alojamento web. Dicas de otimiza\u00e7\u00e3o de alojamento para velocidade m\u00e1xima.<\/p>","protected":false},"author":1,"featured_media":16174,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[780],"tags":[],"class_list":["post-16181","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"2824","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":null,"_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"PHP Handler Vergleich","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"16174","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/16181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/comments?post=16181"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/16181\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media\/16174"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media?parent=16181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/categories?post=16181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/tags?post=16181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}