{"id":22158,"date":"2026-11-05T08:00:00","date_gmt":"2026-11-05T07:00:00","guid":{"rendered":"https:\/\/webhosting.de\/?p=22158"},"modified":"2026-11-05T07:23:23","modified_gmt":"2026-11-05T06:23:23","slug":"php-fpm-planeamento-de-capacidade-workers-ram-pedidos","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pt\/php-fpm-kapazitaetsplanung-worker-ram-requests\/","title":{"rendered":"Planeamento da capacidade do PHP-FPM: calcular o n\u00famero de workers, a mem\u00f3ria RAM e o n\u00famero de pedidos simult\u00e2neos"},"content":{"rendered":"<div class=\"wh-article\" data-wh-layout=\"2.1.2\" style=\"width:100%;max-width:820px;margin:0 auto;color:#263b4b;font-family:inherit;font-size:18px;line-height:1.8;text-align:start;overflow-wrap:break-word;box-sizing:border-box\"><p class=\"wh-lead\" style=\"font-size:20px;line-height:1.7;color:#233746;margin:0 0 1.1em\">Para um planeamento adequado da capacidade do PHP-FPM, calcula primeiro quantos workers cabem no or\u00e7amento de RAM dispon\u00edvel. Separadamente, estima quantos workers s\u00e3o necess\u00e1rios para o tr\u00e1fego que chega efetivamente ao pool. <strong style=\"font-weight:700;color:inherit\">pm.max_children<\/strong> limita o n\u00famero de workers dispon\u00edveis simultaneamente por pool, mas n\u00e3o representa nem um n\u00famero de visitantes nem um valor direto de d\u00e9bito. A CPU, a base de dados e os picos de carga tamb\u00e9m determinam qual a configura\u00e7\u00e3o vi\u00e1vel em produ\u00e7\u00e3o. <\/p>\n<nav class=\"wh-toc\" aria-label=\"Conte\u00fado deste artigo\" style=\"display:block;margin:28px 0 38px;padding:22px;border:1px solid #d9e4e8;border-radius:14px;background:#f4f8f8\"><p class=\"wh-toc-title\" style=\"font-size:13px;font-weight:700;letter-spacing:.08em;color:#49656b;margin:0 0 14px\">Ir diretamente para a sec\u00e7\u00e3o<\/p><div class=\"wh-toc-grid\" style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:10px\"><div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#worker-und-anfragen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">O que limita um worker do PHP-FPM<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#prozessmanager\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Compreender o gestor de processos e a fila<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#speichergrundlagen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Classificar corretamente a mem\u00f3ria do Worker<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#ram-budget\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Calcular o or\u00e7amento de RAM e o n\u00famero de trabalhadores<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#verkehr-und-belegung\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Estimar o n\u00famero de trabalhadores necess\u00e1rios com base nos pedidos<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#pool-konfiguration\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Derivar as configura\u00e7\u00f5es do pool do planeamento<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#status-und-messung\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Monitorizar o estado do FPM e a mem\u00f3ria<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#engpaesse-diagnostizieren\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Analisar pedidos lentos e filas<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#kapazitaet-entscheiden\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Limites de capacidade e pr\u00f3ximos passos<\/a><\/div>\n<\/div><\/nav><section class=\"wh-section\" aria-labelledby=\"worker-und-anfragen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"worker-und-anfragen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">O que limita um worker do PHP-FPM<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">O PHP-FPM gere os processos PHP em grupos. Um <strong style=\"font-weight:700;color:inherit\">Trabalhador<\/strong> processa uma solicita\u00e7\u00e3o de cada vez; a configura\u00e7\u00e3o do pool <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">pm.max_children<\/code> limita o n\u00famero de workers dispon\u00edveis em simult\u00e2neo e, consequentemente, o n\u00famero de pedidos PHP processados em simult\u00e2neo por este pool. No caso de existirem v\u00e1rios pools, o limite aplica-se apenas ao pool em quest\u00e3o, n\u00e3o se aplicando automaticamente a todo o servidor. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Este n\u00famero n\u00e3o corresponde ao n\u00famero de visitantes registados, nem \u00e9 um valor direto das solicita\u00e7\u00f5es por segundo. Um visitante pode gerar v\u00e1rias solicita\u00e7\u00f5es, enquanto um utilizador registado n\u00e3o ocupa um worker entre duas a\u00e7\u00f5es. Por outro lado, uma \u00fanica solicita\u00e7\u00e3o lenta pode ocupar um worker por mais tempo do que v\u00e1rias solicita\u00e7\u00f5es curtas consecutivas.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Al\u00e9m disso, nem todas as visitas a p\u00e1ginas chegam ao PHP-FPM. Se o servidor Web fornecer diretamente um ficheiro est\u00e1tico ou se um cache a montante responder integralmente a um pedido, n\u00e3o \u00e9 necess\u00e1rio um worker PHP, dependendo da arquitetura. Por outro lado, falhas de cache, utilizadores autenticados e p\u00e1ginas de administra\u00e7\u00e3o podem continuar a gerar pedidos PHP e aumentar temporariamente a carga do sistema.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Para o planeamento da capacidade, h\u00e1, portanto, duas quest\u00f5es distintas que s\u00e3o decisivas: quantos workers cabem, incluindo uma reserva, na RAM dispon\u00edvel? E quantos workers s\u00e3o necess\u00e1rios para o tr\u00e1fego que chega efetivamente ao pool, de modo a que os pedidos n\u00e3o tenham de esperar por um tempo excessivamente longo? Um valor elevado para <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">pm.max_children<\/code> n\u00e3o responde, por si s\u00f3, a nenhuma destas perguntas.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Mesmo que haja mem\u00f3ria suficiente, a CPU, a base de dados ou os servi\u00e7os externos podem limitar a capacidade pr\u00e1tica. Nesse caso, os workers adicionais permitem, sim, mais tarefas PHP em paralelo, mas podem, ao mesmo tempo, aumentar a press\u00e3o sobre um servi\u00e7o que j\u00e1 est\u00e1 lento. O valor do pool \u00e9, portanto, um limite operacional e n\u00e3o uma garantia de desempenho.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"prozessmanager\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"prozessmanager\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Compreender o gestor de processos e a fila<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">O <strong style=\"font-weight:700;color:inherit\">Gestor de processos<\/strong> define quando o PHP-FPM disponibiliza os workers. Em <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">static<\/code> o n\u00famero de processos em espera corresponde ao valor de <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">pm.max_children<\/code>. Isto permite planear bem o n\u00famero de processos, mas tamb\u00e9m ocupa recursos, mesmo com uma carga de trabalho reduzida. O limite m\u00e1ximo, por si s\u00f3, tem de continuar a corresponder \u00e0 mem\u00f3ria dispon\u00edvel. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Em <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">dynamic<\/code> o FPM ajusta o n\u00famero de processos: o n\u00famero inicial, bem como o n\u00famero m\u00ednimo e m\u00e1ximo de trabalhadores livres, s\u00e3o tamb\u00e9m definidos. No caso de <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">ondemand<\/code> Os workers s\u00f3 s\u00e3o criados quando necess\u00e1rio e s\u00e3o encerrados ap\u00f3s um per\u00edodo de inatividade configurado. Isto pode poupar recursos em pools raramente utilizados; no entanto, em caso de um pico de carga repentino, \u00e9 necess\u00e1rio criar primeiro nova capacidade de processamento. <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Compara\u00e7\u00e3o entre gestores de processos\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Compara\u00e7\u00e3o entre gestores de processos<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Modo<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Defini\u00e7\u00f5es importantes<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Aplica\u00e7\u00e3o e pondera\u00e7\u00e3o<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">est\u00e1tico<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">pm.max_children<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">N\u00famero fixo de trabalhadores; f\u00e1cil de planear, mas implica a imobiliza\u00e7\u00e3o de recursos quando n\u00e3o est\u00e3o a ser utilizados.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">din\u00e2mico<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Adapta\u00e7\u00e3o \u00e0s necessidades vari\u00e1veis; \u00e9 necess\u00e1rio coordenar os trabalhadores dispon\u00edveis e os que est\u00e3o a iniciar o trabalho.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">a pedido<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">pm.max_children, pm.process_idle_timeout<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Worker quando necess\u00e1rio; poupa recursos em pools raramente utilizados; \u00e9 necess\u00e1rio ter em conta o arranque de processos em caso de aumento da carga.<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Se todos os trabalhadores estiverem ocupados, os pedidos adicionais podem ser colocados na <strong style=\"font-weight:700;color:inherit\">Fila de ouvintes<\/strong> aguardar um processo dispon\u00edvel. O estado do FPM indica, entre outros aspetos, o tamanho atual e o tamanho m\u00e1ximo da fila. No entanto, um \u00fanico valor m\u00e1ximo elevado n\u00e3o indica se o conjunto est\u00e1 sobrecarregado nesse momento; para isso, \u00e9 necess\u00e1rio um contexto temporal. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Uma fila maior n\u00e3o cria trabalhadores adicionais nem acelera uma base de dados lenta. Pode aceitar pedidos temporariamente, mas limita-se a antecipar o tempo de espera para antes do processamento em PHP. Por isso, para decidir sobre o gestor de processos, s\u00e3o importantes tanto a evolu\u00e7\u00e3o t\u00edpica da carga como as consequ\u00eancias de picos de tr\u00e1fego de curta dura\u00e7\u00e3o.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"speichergrundlagen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"speichergrundlagen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Classificar corretamente a mem\u00f3ria do Worker<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">N\u00e3o \u00e9 poss\u00edvel determinar de forma fi\u00e1vel a necessidade de mem\u00f3ria de um worker apenas com base num limite de configura\u00e7\u00e3o do PHP. Para efeitos de planeamento, os dados de processo em condi\u00e7\u00f5es de carga adequadas s\u00e3o mais \u00fateis. Nesse contexto, faz diferen\u00e7a se estiveres a analisar a mem\u00f3ria residente de um \u00fanico processo ou se pretenderes avaliar o consumo de todo um grupo de workers do PHP-FPM.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><strong style=\"font-weight:700;color:inherit\">RSS<\/strong> descreve a mem\u00f3ria residente de um processo. Se v\u00e1rios trabalhadores utilizarem as mesmas p\u00e1ginas de mem\u00f3ria, estas podem estar inclu\u00eddas nas respetivas RSS. Se somares os valores de RSS de todos os trabalhadores, as p\u00e1ginas partilhadas podem, em determinadas circunst\u00e2ncias, aparecer v\u00e1rias vezes; por isso, a soma n\u00e3o constitui uma indica\u00e7\u00e3o precisa da mem\u00f3ria f\u00edsica partilhada. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><strong style=\"font-weight:700;color:inherit\">PSS<\/strong> distribui as p\u00e1ginas partilhadas proporcionalmente pelos processos envolvidos. A soma dos valores PSS de um grupo de processos \u00e9, por isso, frequentemente mais \u00fatil para o planeamento da mem\u00f3ria desse grupo do que a soma dos valores RSS. No entanto, trata-se apenas de um instant\u00e2neo: se o n\u00famero de processos que partilham as p\u00e1ginas se alterar, as respetivas propor\u00e7\u00f5es tamb\u00e9m se alteram. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Analise v\u00e1rios workers em pedidos t\u00edpicos e tamb\u00e9m em pedidos que exigem muito da mem\u00f3ria. Um processo rec\u00e9m-iniciado ou uma m\u00e9dia isolada pode subestimar as necessidades futuras. O PSS total do pool para diferentes n\u00fameros de trabalhadores e estados de carga ajuda a obter um valor aproximado conservador; uma extrapola\u00e7\u00e3o para um n\u00famero maior de trabalhadores permanece incerta devido \u00e0s propor\u00e7\u00f5es vari\u00e1veis entre os recursos comuns e privados.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">O PHP-<code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">memory_limit<\/code> n\u00e3o \u00e9 um valor fi\u00e1vel para a mem\u00f3ria total do sistema operativo de um processo FPM e n\u00e3o substitui essa observa\u00e7\u00e3o. A mem\u00f3ria partilhada, por exemplo, pela OPcache, n\u00e3o deve ser deduzida uma segunda vez do or\u00e7amento de forma generalizada, caso j\u00e1 esteja inclu\u00edda proporcionalmente no PSS do pool utilizado. No entanto, \u00e9 necess\u00e1rio ter em conta outros servi\u00e7os e uma reserva.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"ram-budget\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"ram-budget\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Calcular o or\u00e7amento de RAM e o n\u00famero de trabalhadores<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">O ponto de partida \u00e9 a mem\u00f3ria RAM efetivamente dispon\u00edvel: num host, a mem\u00f3ria utiliz\u00e1vel para os servi\u00e7os; num contentor, o limite efetivo de mem\u00f3ria. Subtraia disso as necessidades do sistema operativo, do servidor Web, de uma eventual base de dados local e de outros servi\u00e7os. Outros conjuntos de FPM e uma reserva para o consumo vari\u00e1vel tamb\u00e9m devem ser tidos em conta no c\u00e1lculo.<\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail1\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-ram-budget-speichermodul-4f6be11b-detail1-b501ee44f1-1024x683.webp\" class=\"wp-image-22161\" alt=\"Imagem simb\u00f3lica gerada por IA de um m\u00f3dulo de RAM removido sobre um tapete antiest\u00e1tico de oficina.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-ram-budget-speichermodul-4f6be11b-detail1-b501ee44f1-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-ram-budget-speichermodul-4f6be11b-detail1-b501ee44f1-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-ram-budget-speichermodul-4f6be11b-detail1-b501ee44f1-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-ram-budget-speichermodul-4f6be11b-detail1-b501ee44f1-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-ram-budget-speichermodul-4f6be11b-detail1-b501ee44f1.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail1\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">Imagem ilustrativa gerada por IA: A mem\u00f3ria RAM dispon\u00edvel limita o or\u00e7amento para os pools do PHP-FPM.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A parte restante \u00e9 a <strong style=\"font-weight:700;color:inherit\">Or\u00e7amento comum<\/strong>. Para obter o valor estimado do worker, observa a soma PSS dos workers do pool com diferentes n\u00fameros de processos e condi\u00e7\u00f5es de carga. Tem em conta tanto as solicita\u00e7\u00f5es t\u00edpicas como os pontos finais que exigem muita mem\u00f3ria. Divida a respetiva soma pelo n\u00famero de trabalhadores em an\u00e1lise e deduza um valor aproximado prudente a partir de v\u00e1rias observa\u00e7\u00f5es. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">O c\u00e1lculo que se segue \u00e9 um exemplo ilustrativo, n\u00e3o uma medi\u00e7\u00e3o. Os valores assumidos servem apenas para demonstrar o racioc\u00ednio matem\u00e1tico; n\u00e3o constituem uma recomenda\u00e7\u00e3o para uma aplica\u00e7\u00e3o espec\u00edfica. O resultado \u00e9 arredondado para um n\u00famero inteiro de trabalhadores.<\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Planeamento ilustrativo da RAM para um \u00fanico pool\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Planeamento ilustrativo da RAM para um \u00fanico pool<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Passo de c\u00e1lculo<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Aceita\u00e7\u00e3o<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Classifica\u00e7\u00e3o<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Limite efetivo de RAM<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">4 096 MiB<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Limite do anfitri\u00e3o ou do contentor no exemplo<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Outros servi\u00e7os, grupos e reserva<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">2 048 MiB<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Dedu\u00e7\u00e3o acordada em conjunto<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Or\u00e7amento para o conjunto em an\u00e1lise<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">2 048 MiB<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">4 096 menos 2 048 MiB<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Valor aproximado do PSS por trabalhador<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">80 MiB<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Valor de planeamento conservador adotado<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Limite de RAM calculado<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">25 trabalhadores<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">2 048 dividido por 80, arredondado por defeito<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Os 25 workers n\u00e3o garantem uma aloca\u00e7\u00e3o segura. O PSS distribui as p\u00e1ginas partilhadas proporcionalmente e varia consoante o n\u00famero de processos que partilham essas p\u00e1ginas. Uma composi\u00e7\u00e3o diferente de pedidos tamb\u00e9m pode alterar as necessidades de mem\u00f3ria privada; por isso, a estimativa deve ser verificada em rela\u00e7\u00e3o ao consumo total observado e ao limite existente. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Se a mem\u00f3ria partilhada, como o OPcache, j\u00e1 estiver inclu\u00edda proporcionalmente no total de PSS utilizado, n\u00e3o a deduzas novamente de forma global como um item adicional completo. No entanto, prev\u00ea uma reserva para as partes de mem\u00f3ria que n\u00e3o estejam abrangidas pela tua an\u00e1lise. Especialmente no caso de um limite de contentores, o que conta, em \u00faltima an\u00e1lise, \u00e9 o consumo de todos os processos dentro desse limite, e n\u00e3o apenas a soma estimada dos workers.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Um worker rec\u00e9m-iniciado, por si s\u00f3, n\u00e3o \u00e9 muito significativo como base: \u00e9 poss\u00edvel que ainda n\u00e3o tenha processado nenhuma solicita\u00e7\u00e3o complexa. Por isso, compare v\u00e1rios momentos e registe quais os pontos finais e quantos \u00abworkers\u00bb estiveram envolvidos em cada um deles. Desta forma, \u00e9 poss\u00edvel verificar se o valor aproximado escolhido se mant\u00e9m v\u00e1lido mesmo em condi\u00e7\u00f5es de funcionamento menos favor\u00e1veis, mas realistas.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"verkehr-und-belegung\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"verkehr-und-belegung\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Estimar o n\u00famero de trabalhadores necess\u00e1rios com base nos pedidos<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">O c\u00e1lculo da RAM descreve quantos workers se prev\u00ea que possam ser acomodados. Por outro lado, para determinar a necessidade, o que conta \u00e9 o n\u00famero de pedidos PHP que chegam efetivamente ao pool em quest\u00e3o e o tempo que cada um deles ocupa um trabalhador. Como primeira aproxima\u00e7\u00e3o, aplica-se o seguinte: o n\u00famero m\u00e9dio de trabalhadores ocupados simultaneamente \u00e9 igual ao n\u00famero de pedidos PHP por segundo multiplicado pelo tempo m\u00e9dio de ocupa\u00e7\u00e3o de um trabalhador, em segundos.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Exemplo de c\u00e1lculo ilustrativo, n\u00e3o se trata de uma medi\u00e7\u00e3o: partindo do pressuposto de 20 pedidos PHP por segundo e de um tempo m\u00e9dio de processamento de 0,25 segundos, est\u00e3o, em m\u00e9dia, cinco workers ocupados. Trata-se de uma m\u00e9dia relativa ao per\u00edodo em an\u00e1lise. Isto n\u00e3o significa que estejam sempre exatamente cinco processos a funcionar, nem que cinco sejam suficientes como limite do pool para picos de tr\u00e1fego de curta dura\u00e7\u00e3o.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Para calcular o n\u00famero de pedidos, n\u00e3o se devem considerar todas as visualiza\u00e7\u00f5es de p\u00e1ginas sem verifica\u00e7\u00e3o. Se uma cache fornecer muitas respostas sem recorrer ao PHP, esses acertos n\u00e3o sobrecarregam o pool. Por outro lado, os erros de cache, os visitantes com sess\u00e3o iniciada e os acessos administrativos podem, por vezes, gerar mais trabalho para o PHP do que a m\u00e9dia calculada ao longo do dia poderia sugerir.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">O <strong style=\"font-weight:700;color:inherit\">Tempo de ocupa\u00e7\u00e3o do trabalhador<\/strong> inclui tamb\u00e9m os tempos de espera durante o processamento, por exemplo, enquanto se aguarda uma resposta de uma base de dados ou de um servi\u00e7o externo. N\u00e3o deve ser automaticamente equiparado ao tempo de resposta vis\u00edvel no navegador. De acordo com <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">fastcgi_finish_request()<\/code> o PHP pode j\u00e1 ter conclu\u00eddo a resposta para o cliente e, mesmo assim, continuar a executar tarefas no worker. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Para garantir tempos de espera aceit\u00e1veis, \u00e9 necess\u00e1rio uma margem acima da ocupa\u00e7\u00e3o m\u00e9dia. A dimens\u00e3o dessa margem depende, entre outros fatores, das flutua\u00e7\u00f5es de carga, dos pontos finais lentos e da meta de tempo de resposta pretendida. Multiplicar o n\u00famero de pedidos de pico por segundo por um percentil de lat\u00eancia elevado pode constituir uma an\u00e1lise cautelosa do cen\u00e1rio, mas n\u00e3o \u00e9 uma previs\u00e3o precisa das filas de espera.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Por isso, considere v\u00e1rios per\u00edodos separadamente: um pico de atividade de curta dura\u00e7\u00e3o e um tr\u00e1fego noturno mais calmo podem resultar na mesma m\u00e9dia di\u00e1ria que um funcionamento mais uniforme, mas apresentam requisitos diferentes. Se o tempo de ocupa\u00e7\u00e3o aumentar devido a um backend lento, o n\u00famero m\u00e9dio de trabalhadores ocupados tamb\u00e9m aumenta, mesmo com a mesma taxa de chegadas. A procura n\u00e3o \u00e9, portanto, apenas uma caracter\u00edstica do fluxo de visitantes.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"pool-konfiguration\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"pool-konfiguration\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Derivar as configura\u00e7\u00f5es do pool do planeamento<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Compara agora o limite m\u00e1ximo baseado na RAM com a necessidade estimada, incluindo uma margem de seguran\u00e7a. Se a necessidade for inferior a esse valor, escolhe um valor inicial conservador para <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">pm.max_children<\/code>, que n\u00e3o tem de esgotar o or\u00e7amento. No exemplo ilustrativo, 25 seria o limite te\u00f3rico de RAM, mas n\u00e3o necessariamente a configura\u00e7\u00e3o adequada; a CPU e o backend podem j\u00e1 impor limites antes disso.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Se a necessidade estimada for superior ao limite da RAM, aumentar esse limite n\u00e3o resolve o problema: pode colocar o anfitri\u00e3o ou o contentor sob press\u00e3o de mem\u00f3ria. Por outro lado, um limite muito baixo pode fazer com que as solicita\u00e7\u00f5es fiquem em espera. Neste caso, melhore, por exemplo, o tempo de execu\u00e7\u00e3o ou a utiliza\u00e7\u00e3o da cache e verifique se s\u00e3o necess\u00e1rios recursos adicionais ou uma limita\u00e7\u00e3o da carga de entrada.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Em <strong style=\"font-weight:700;color:inherit\">din\u00e2mico<\/strong> Al\u00e9m do limite m\u00e1ximo, define o n\u00famero inicial, bem como o n\u00famero m\u00ednimo e m\u00e1ximo de trabalhadores dispon\u00edveis. Os valores iniciais e de reserva devem corresponder \u00e0 carga prevista e permanecer dentro do limite m\u00e1ximo. Uma capacidade reservada insuficiente pode implicar uma necessidade adicional de inicializa\u00e7\u00e3o em caso de carga repentina; por outro lado, um n\u00famero elevado de processos livres de forma permanente consome recursos. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Em <strong style=\"font-weight:700;color:inherit\">a pedido<\/strong> Os workers s\u00f3 s\u00e3o criados quando necess\u00e1rio; o tempo de inatividade at\u00e9 ao seu encerramento \u00e9 definido separadamente. Isto pode ser \u00fatil para pools raramente utilizados, mas requer especial aten\u00e7\u00e3o em caso de aumentos r\u00e1pidos da carga. Tamb\u00e9m neste caso, limita-se <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">pm.max_children<\/code> o n\u00famero de trabalhadores do conjunto dispon\u00edveis em simult\u00e2neo. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">V\u00e1rios sites alojados no mesmo servidor n\u00e3o recebem, de forma independente, toda a RAM livre dispon\u00edvel. Defina os limites m\u00e1ximos de cada pool em conjunto com os restantes servi\u00e7os e a reserva. Um limite global de processos FPM, caso tenha sido configurado, pode ser aplicado adicionalmente, mas n\u00e3o substitui nem os or\u00e7amentos individuais dos pools nem a verifica\u00e7\u00e3o da capacidade da CPU e da base de dados. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Ap\u00f3s as altera\u00e7\u00f5es, verifica a carga real e os tempos de espera ao longo de per\u00edodos adequados, em vez de considerar o valor inicial como definitivo. No caso do alojamento gerido, os dados de processo ou as defini\u00e7\u00f5es do pool podem n\u00e3o estar diretamente acess\u00edveis; nesse caso, utilize as m\u00e9tricas e as op\u00e7\u00f5es disponibilizadas pelo fornecedor. As defini\u00e7\u00f5es dispon\u00edveis dependem tamb\u00e9m da vers\u00e3o do PHP e do ambiente operativo.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"status-und-messung\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"status-und-messung\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Monitorizar o estado do FPM e a mem\u00f3ria<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A p\u00e1gina de estado do FPM mostra se os workers planeados s\u00e3o suficientes sob carga real. <strong style=\"font-weight:700;color:inherit\">Protege o ponto final de estado<\/strong> protegido do acesso p\u00fablico: pode revelar informa\u00e7\u00f5es confidenciais sobre pedidos e recursos. Um \u00abstatus listener\u00bb configurado separadamente pode permanecer acess\u00edvel mesmo quando o pool principal estiver sobrecarregado; verifica a sua disponibilidade e configura\u00e7\u00e3o para a tua vers\u00e3o do PHP e para a configura\u00e7\u00e3o do servidor web.  <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Analisar os valores de estado do FPM no contexto temporal\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Analisar os valores de estado do FPM no contexto temporal<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Valor de estado<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Classifica\u00e7\u00e3o<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Pergunta complementar<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">processos ativos \/ processos inativos<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Trabalhadores atualmente empregados e trabalhadores independentes<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Haver\u00e1 trabalhadores dispon\u00edveis durante os picos de carga?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">fila de reprodu\u00e7\u00e3o \/ fila m\u00e1xima de reprodu\u00e7\u00e3o<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Comprimento atual e m\u00e1ximo registado at\u00e9 ao momento da fila<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">A fila aumenta quando as respostas s\u00e3o lentas?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">m\u00e1ximo de crian\u00e7as alcan\u00e7adas<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Contador para determinar quando \u00e9 atingido o limite de trabalhadores nos modos \u00abdynamic\u00bb ou \u00abondemand\u00bb<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">O contador aumenta no per\u00edodo em an\u00e1lise?<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">pedidos lentos<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Contador de pedidos lentos<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Ser\u00e1 que esse aumento coincide com tempos de resposta mais longos?<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Considera os valores como <strong style=\"font-weight:700;color:inherit\">s\u00e9ries temporais<\/strong> juntamente com o volume de pedidos e os tempos de resposta. Um valor m\u00e1ximo antigo da fila n\u00e3o comprova uma sobrecarga atual; da mesma forma, no caso dos contadores, o seu aumento desde a \u00faltima observa\u00e7\u00e3o \u00e9 mais significativo do que o mero valor total. T\u00e9m em conta, neste contexto, o arranque do pool ou os rein\u00edcios, que alteram o per\u00edodo de refer\u00eancia. <\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail2\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-status-zeitlicher-bezug-4f6be11b-detail2-7093395fad-1024x683.webp\" class=\"wp-image-22162\" alt=\"Ilustra\u00e7\u00e3o gerada por IA de duas tiras de papel com aglomerados de pontos atuais e anteriores.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-status-zeitlicher-bezug-4f6be11b-detail2-7093395fad-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-status-zeitlicher-bezug-4f6be11b-detail2-7093395fad-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-status-zeitlicher-bezug-4f6be11b-detail2-7093395fad-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-status-zeitlicher-bezug-4f6be11b-detail2-7093395fad-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/php-fpm-status-zeitlicher-bezug-4f6be11b-detail2-7093395fad.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail2\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">Ilustra\u00e7\u00e3o gerada por IA: os valores atuais e os m\u00e1ximos hist\u00f3ricos necessitam de uma refer\u00eancia temporal.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">No caso de um FPM-Worker conhecido, \u00e9 poss\u00edvel obter valores de mem\u00f3ria agregados em modo de leitura num sistema Linux com a interface proc dispon\u00edvel. Substitua <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">PID<\/code> atrav\u00e9s do ID real do processo; \u00e9 necess\u00e1rio dispor dos direitos de acesso adequados. Repete a observa\u00e7\u00e3o para v\u00e1rios trabalhadores e estados de carga, em vez de deduzir um tamanho de pool permanente a partir de um \u00fanico processo. <\/p>\n<div class=\"wh-code-window\" data-wh-code style=\"margin:28px 0 34px;border:1px solid #2c4656;border-radius:12px;overflow:hidden;background:#132a3b;box-shadow:0 9px 25px -13px rgba(15,35,55,.2)\"><div class=\"wh-code-toolbar\" style=\"display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;background:#223e50;color:#edf5fa;font-size:13px;line-height:1.5;font-weight:600\"><span>Terminal<\/span><button type=\"button\" class=\"wh-code-copy\" data-wh-copy hidden style=\"padding:6px 11px;border:1px solid #7893a1;border-radius:6px;background:transparent;color:#fff;font-size:12px;line-height:1.5;font-weight:600;cursor:pointer\">Copiar c\u00f3digo<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Copiado<\/span><span data-wh-copy-fallback hidden>C\u00f3digo destacado \u2013 por favor, copie<\/span><\/div><pre class=\"wh-code\" data-no-translation translate=\"no\" style=\"display:block;margin:0;padding:20px;max-width:100%;overflow-x:auto;color:#edf5fa;background:#132a3b;font:14px\/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;direction:ltr;text-align:left\"><code class=\"language-bash\" style=\"font:inherit;color:inherit;background:transparent;padding:0;border:0;white-space:inherit\">cat \/proc\/PID\/smaps_rollup<\/code><\/pre><\/div><\/section><section class=\"wh-section\" aria-labelledby=\"engpaesse-diagnostizieren\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"engpaesse-diagnostizieren\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Analisar pedidos lentos e filas<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Uma loja pode apresentar muitos workers ativos, embora a execu\u00e7\u00e3o do PHP em si n\u00e3o seja o principal gargalo. Se houver pedidos em espera devido a consultas lentas \u00e0 base de dados, os trabalhadores ficam bloqueados durante esse per\u00edodo. Se chegarem mais pedidos, a fila do listener pode aumentar e o tempo de resposta pode prolongar-se, mesmo que a CPU ainda disponha de reservas.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Um limite mais elevado de workers pode, nesta situa\u00e7\u00e3o, permitir que mais pedidos cheguem simultaneamente \u00e0 base de dados. Isso pode <strong style=\"font-weight:700;color:inherit\">Impress\u00e3o no backend<\/strong> aumentar e prolongar ainda mais os tempos de espera. Por isso, compara a evolu\u00e7\u00e3o ao longo do tempo da utiliza\u00e7\u00e3o do FPM e da fila de espera com a carga da base de dados, as consultas lentas e as chamadas a servi\u00e7os externos, antes de aumentares o limite.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">O Slowlog do FPM ajuda a identificar chamadas PHP demoradas: para pedidos que excedam um limiar configurado, o FPM pode registar um backtrace. Este mostra um ponto de execu\u00e7\u00e3o e n\u00e3o constitui um perfil completo de todo o pedido. Os pontos recorrentes podem ser comparados com a dura\u00e7\u00e3o da solicita\u00e7\u00e3o e as m\u00e9tricas do backend; o <a href=\"https:\/\/webhosting.de\/pt\/analise-correta-do-slowlog-do-php-fpm-otimizacao-de-desempenho-depuracao-e-analise\/\">Guia para a an\u00e1lise do slowlog do PHP-FPM<\/a> explica a an\u00e1lise posterior. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">O tempo limite tamb\u00e9m deve ser distinguido da capacidade real. No nginx, designa-se <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">fastcgi_read_timeout<\/code> o intervalo permitido entre opera\u00e7\u00f5es de leitura sucessivas do servidor FastCGI, e n\u00e3o, de forma generalizada, a dura\u00e7\u00e3o total do pedido. Um valor mais elevado pode permitir tempos de espera mais longos, mas n\u00e3o cria trabalhadores adicionais nem acelera a base de dados. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"kapazitaet-entscheiden\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"kapazitaet-entscheiden\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Limites de capacidade e pr\u00f3ximos passos<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Se o or\u00e7amento de RAM n\u00e3o for suficiente para as necessidades estimadas, um valor mais elevado para <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">pm.max_children<\/code> N\u00e3o ignore este conflito de objetivos: os processos adicionais tamb\u00e9m requerem mem\u00f3ria. Em vez disso, verifica se \u00e9 poss\u00edvel reduzir o n\u00famero de pedidos PHP ou a dura\u00e7\u00e3o da ocupa\u00e7\u00e3o dos workers. A medida mais adequada depende da origem da carga observada.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Uma cache melhor aproveitada pode interceptar chamadas repetidas, enquanto uma execu\u00e7\u00e3o mais r\u00e1pida do PHP e os acessos \u00e0 base de dados libertam os workers mais cedo. O trabalho em segundo plano adequado pode ser deslocado para fora do percurso imediato da solicita\u00e7\u00e3o; no entanto, esse trabalho tamb\u00e9m requer recursos pr\u00f3prios. Um limite de carga protege o backend durante os picos de tr\u00e1fego, mas pode fazer com que as solicita\u00e7\u00f5es fiquem em espera ou sejam rejeitadas.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Mais mem\u00f3ria RAM pode permitir um maior n\u00famero de workers, caso a mem\u00f3ria seja, de facto, o limite determinante. Se a CPU, a base de dados ou um servi\u00e7o externo j\u00e1 estiverem a funcionar no limite da sua capacidade, esta deve tamb\u00e9m ser tida em conta. Por isso, mais mem\u00f3ria, por si s\u00f3, n\u00e3o garante nem tempos de resposta mais curtos nem um maior d\u00e9bito.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Se a necessidade de mem\u00f3ria de cada trabalhador aumentar ao longo do seu ciclo de vida, pode <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">pm.max_requests<\/code> provocar a sua substitui\u00e7\u00e3o regular. Isto pode ajudar a lidar com fugas de mem\u00f3ria em bibliotecas de terceiros, mas n\u00e3o resolve a causa do problema. Ap\u00f3s uma altera\u00e7\u00e3o, continue a monitorizar a mem\u00f3ria do pool e o comportamento das solicita\u00e7\u00f5es, em vez de tratar o mecanismo de rein\u00edcio como um substituto da dete\u00e7\u00e3o de erros. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Para uma decis\u00e3o de arquitetura mais abrangente, o <a href=\"https:\/\/webhosting.de\/pt\/nginx-unit-como-alternativa-ao-php-fpm\/\">Compara\u00e7\u00e3o entre o NGINX Unit e o PHP-FPM<\/a> Contexto: O NGINX Unit foi arquivado e j\u00e1 n\u00e3o recebe atualiza\u00e7\u00f5es. Independentemente da arquitetura escolhida, deves efetuar as altera\u00e7\u00f5es com base em <strong style=\"font-weight:700;color:inherit\">s\u00e9ries temporais<\/strong> Verificar: em casos de volume de pedidos semelhante, compare a fila de espera, a carga de trabalho dos workers, a mem\u00f3ria e os tempos de resposta. Desta forma, \u00e9 poss\u00edvel determinar se um ajuste resolveu efetivamente o estrangulamento ou se apenas o deslocou. <\/p>\n<\/section><section class=\"wh-sources\" style=\"margin:40px 0 0;padding:24px 0 0;border-top:1px solid #dce5e9;color:#596b7b;font-size:14px;line-height:1.65\"><h2 style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Fontes e estado atual dos conhecimentos<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Estado da pesquisa: <time datetime=\"2026-11-04\">2026-11-04<\/time><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Data da pesquisa: 4 de novembro de 2026. Verificar a disponibilidade do Status Listener, dos dados de processo e das defini\u00e7\u00f5es do pool para a vers\u00e3o de PHP e Linux utilizada, bem como para o ambiente de alojamento.<\/p><div class=\"wh-source-urls\"><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/www.php.net\/install.fpm.configuration<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/www.php.net\/fpm.status.php<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/docs.kernel.org\/7.0\/filesystems\/proc.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/www.kernel.org\/doc\/html\/v6.12\/filesystems\/proc.html<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/www.php.net\/manual\/de\/install.fpm.php<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/nginx.org\/en\/docs\/http\/ngx_http_fastcgi_module.html<\/span><\/p><\/div><\/section><\/div>","protected":false},"excerpt":{"rendered":"<p>Quantos workers do PHP-FPM cabem na RAM e quantos s\u00e3o necess\u00e1rios para o tr\u00e1fego real? O artigo explica a medi\u00e7\u00e3o do PSS, a ocupa\u00e7\u00e3o dos workers e os limites do par\u00e2metro pm.max_children.<\/p>","protected":false},"author":1,"featured_media":22160,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[780],"tags":[],"class_list":["post-22158","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"surfer_file_name":null,"surfer_file_original_url":null,"_wp_attachment_image_alt":null,"litespeed-optimize-set":null,"litespeed-optimize-size":null,"_oembed_b5e1eb923ad3b086e579b1befcd4075c":null,"_elementor_source_image_hash":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,"_source_url":null,"_elementor_migrations_state_8b2d":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,"_wh_make_key":"wh_4f6be11b8d366b100ffc303a6d621b39","rank_math_internal_links_processed":"1","_wh_make_topic":"PHP-FPM Kapazit\u00e4tsplanung \u2013 gleichzeitige Requests, RAM-Verbrauch und Worker sinnvoll berechnen","_wh_make_input_keywords":["php-fpm worker","php hosting performance","pm max children"],"_wh_make_config":{"research_model":"gpt-6.1-terra","writer_model":"gpt-6.1-terra","review_model":"gpt-6.1-sol","image_model":"gpt-image-2.5-flare","image_quality":"high","image_format":"webp","final_status":"draft","charts_enabled":true},"_wh_make_links":{"I1":{"id":"I1","post_id":21778,"url":"https:\/\/webhosting.de\/nginx-unit-alternative-zu-php-fpm\/","title":"NGINX Unit como alternativa ao PHP-FPM? Arquitetura, riscos e casos de utiliza\u00e7\u00e3o","excerpt":"O NGINX Unit era, do ponto de vista t\u00e9cnico, mais do que o PHP-FPM: o servidor de aplica\u00e7\u00f5es conseguia integrar HTTP, encaminhamento, ficheiros est\u00e1ticos e execu\u00e7\u00e3o de PHP. No entanto, o Unit n\u00e3o constitui uma alternativa geral para novas plataformas de alojamento PHP, uma vez que o projeto est\u00e1 arquivado desde outubro de 2025 e j\u00e1 n\u00e3o \u00e9 atualizado. O NGINX com PHP-FPM continua, portanto, a ser a escolha padr\u00e3o mais compreens\u00edvel para novos sistemas. O Unit \u00e9, sobretudo, relevante para instala\u00e7\u00f5es existentes documentadas, an\u00e1lises de risco e migra\u00e7\u00f5es planeadas. Ir diretamente para a sec\u00e7\u00e3o: Estado arquivado e veredicto claro O NGINX, o PHP-FPM e o Unit distinguem-se pelos m\u00f3dulos PHP, vers\u00f5es e limites de configura\u00e7\u00e3o Configurar o encaminhamento PHP e o Front Controller Comparar modelos de processo e or\u00e7amento de RAM Avaliar modelos operacionais para alojamento PHP Operar o Unit em seguran\u00e7a em sistemas existentes Tempos de espera, registos e processos bloqueados. Decis\u00e3o sobre sistemas novos e antigos. Estado arquivado e veredicto claro. A 30 de setembro de 2026, o veredicto \u00e9 claro: O NGINX Unit conseguia executar aplica\u00e7\u00f5es PHP diretamente, aceitando liga\u00e7\u00f5es HTTP, terminando TLS, servindo ficheiros est\u00e1ticos e encaminhando pedidos. Assim, o seu leque de funcionalidades ultrapassava significativamente o do PHP-FPM. No entanto, para novas plataformas de alojamento PHP em produ\u00e7\u00e3o, o Unit n\u00e3o \u00e9 uma recomenda\u00e7\u00e3o geral, uma vez que o projeto oficial est\u00e1 arquivado desde outubro de 2025 e j\u00e1 n\u00e3o \u00e9 mantido. Isso n\u00e3o significa que uma instala\u00e7\u00e3o existente do Unit deixe de funcionar imediatamente. Pode continuar a servir uma aplica\u00e7\u00e3o, desde que as suas depend\u00eancias, medidas de seguran\u00e7a e um plano de migra\u00e7\u00e3o estejam documentados. No entanto, um novo investimento deve ser avaliado de forma diferente: sem manuten\u00e7\u00e3o cont\u00ednua do projeto, aumentam os riscos relacionados com falhas de seguran\u00e7a, disponibilidade de pacotes, novas vers\u00f5es do sistema operativo e compatibilidades futuras com o PHP. No que diz respeito \u00e0s indica\u00e7\u00f5es de vers\u00e3o, \u00e9 importante uma separa\u00e7\u00e3o clara. A documenta\u00e7\u00e3o de instala\u00e7\u00e3o, que continua dispon\u00edvel, refere frequentemente a Unit 1.34.2, enquanto que a vers\u00e3o est\u00e1vel 1.35.0 j\u00e1 foi lan\u00e7ada. Esta vers\u00e3o comprova, entre outras coisas, a compatibilidade com o PHP 8.5; no entanto, isso n\u00e3o implica uma manuten\u00e7\u00e3o cont\u00ednua. O ramo de desenvolvimento \u00abmaster\u00bb, devido ao seu estado arquivado, n\u00e3o constitui um produto de refer\u00eancia"},"I2":{"id":"I2","post_id":21283,"url":"https:\/\/webhosting.de\/linux-hugepages-hosting-mariadb-redis-php-fpm-optimierung-nebula\/","title":"HugePages do Linux na hospedagem: um impulso para o MariaDB, o Redis e o PHP-FPM","excerpt":"Mostro, concretamente, como as hugepages do Linux impulsionam o MariaDB, o Redis e o PHP-FPM na pilha de alojamento, onde causam atrasos e como as configuro de forma espec\u00edfica. Desta forma, diminuo a lat\u00eancia, reduzo as falhas de TLB e mantenho a gest\u00e3o da mem\u00f3ria previs\u00edvel. Pontos-chave Os pontos-chave seguintes resumem as principais a\u00e7\u00f5es e os seus efeitos. Escolher conscientemente o modo THP: \u201emadvise\u201c para cargas de trabalho generalizadas, \u201enever\u201c para servi\u00e7os sens\u00edveis como o Redis. Planejar HugePages est\u00e1ticas para grandes conjuntos de buffers do MariaDB, a fim de reduzir a lat\u00eancia e as falhas de TLB. Proteger o Redis contra picos de lat\u00eancia: desativar o THP e limitar os custos de fork. O PHP-FPM beneficia indiretamente de uma menor sobrecarga do kernel e de backends mais r\u00e1pidos. Realizar testes de desempenho e monitoriza\u00e7\u00e3o antes da entrada em funcionamento, tornando os efeitos mensur\u00e1veis. HugePages e THP explicados resumidamente Utilizo HugePages para ativar p\u00e1ginas de mem\u00f3ria maiores e, assim, reduzir o n\u00famero de p\u00e1ginas a gerir. As p\u00e1ginas cl\u00e1ssicas t\u00eam 4 KB, enquanto as p\u00e1ginas grandes t\u00eam, na maioria das vezes, 2 MB. Isto reduz significativamente as falhas de TLB, a CPU gasta menos tempo na gest\u00e3o da mem\u00f3ria e os servi\u00e7os com muitos acessos \u00e0 RAM respondem mais rapidamente. O Transparent Huge Pages (THP) tenta fazer isso automaticamente e pode funcionar sem adapta\u00e7\u00e3o da aplica\u00e7\u00e3o. Relat\u00f3rios pr\u00e1ticos mostram frequentemente opera\u00e7\u00f5es 20 a 40 vezes mais r\u00e1pidas com o %, quando as cargas de trabalho e as configura\u00e7\u00f5es s\u00e3o compat\u00edveis. Escolher e testar corretamente os modos THP Distingo claramente os modos \u201ealways\u201c, \u201emadvise\u201c e \u201enever\u201c, porque afetam as cargas de trabalho de forma diferente. O modo \u201ealways\u201c pode ocupar uma quantidade surpreendente de RAM e gerar esfor\u00e7o de c\u00f3pia quando os servi\u00e7os fazem forking. O modo \u201emadvise\u201c permite controlo: apenas a mem\u00f3ria que a aplica\u00e7\u00e3o marca explicitamente utiliza p\u00e1ginas grandes. O modo \u201enever\u201c oferece a m\u00e1xima previsibilidade, especialmente em servi\u00e7os com forking intensivo, como o Redis. Quem quiser aprofundar o assunto encontrar\u00e1 aqui informa\u00e7\u00f5es sobre as oportunidades e as armadilhas: THP: impulsionador ou problema. Testo cada modo com cargas reais, me\u00e7o a lat\u00eancia, o tempo de CPU e o RSS e, depois, tomo uma decis\u00e3o com base nos factos. Configura\u00e7\u00e3o pr\u00e1tica no host Antes de alterar os servi\u00e7os, garanto que os valores predefinidos do host sejam reproduz\u00edveis e que exista um plano de conting\u00eancia seguro. Definir o THP de forma espec\u00edfica (par\u00e2metros de arranque ou systemd) Atrav\u00e9s do arranque do kernel: no GRUB, \u201etransparent_hu"},"I3":{"id":"I3","post_id":20986,"url":"https:\/\/webhosting.de\/php-fpm-slowlog-richtig-auswerten-performance-optimierung-debugging-analyse\/","title":"Analisar corretamente o Slowlog do PHP-FPM: identificar com seguran\u00e7a os pontos de estrangulamento no desempenho","excerpt":"Vou mostrar-te como analisar o slowlog do PHP-FPM de forma direcionada, interpretar corretamente os backtraces e, a partir da\u00ed, definir passos claros para reduzir a lat\u00eancia. Assim, poder\u00e1s identificar de forma fi\u00e1vel os pontos de estrangulamento no desempenho, priorizar medidas e tornar os tempos de carregamento visivelmente mais r\u00e1pidos para os utilizadores. Pontos-chave para ler o backtrace: o frame #0 indica o atual ponto de estrangulamento. Definir o tempo de espera (timeout): comece com um valor elevado e v\u00e1 reduzindo gradualmente. Correla\u00e7\u00e3o com o registo de acesso: identificar com seguran\u00e7a as URLs lentas. Contar padr\u00f5es: dar prioridade \u00e0s fun\u00e7\u00f5es recorrentes. Deduzir corre\u00e7\u00f5es de c\u00f3digo: abordar de forma direcionada a base de dados, as APIs, os loops e os plugins. O que \u00e9 o Slowlog do PHP-FPM? O Slowlog grava um backtrace num ficheiro de registo para pedidos demorados, registando assim o ponto de execu\u00e7\u00e3o atual sem encerrar o pedido. Consigo identificar imediatamente qual o script, qual a URL e qual a fun\u00e7\u00e3o que est\u00e1 a bloquear o fluxo. As entradas cont\u00eam carimbos de data\/hora, pool, nome do ficheiro do script, URI da solicita\u00e7\u00e3o e a cadeia de chamadas de fun\u00e7\u00f5es. Por isso, o Slowlog distingue-se claramente dos registos de erros cl\u00e1ssicos, pois documenta o desempenho, n\u00e3o os erros. Para p\u00e1ginas com elevada carga, como os back-ends do WordPress, fornece indica\u00e7\u00f5es rapidamente aproveit\u00e1veis sobre consultas dispendiosas, renderiza\u00e7\u00e3o excessiva ou opera\u00e7\u00f5es de E\/S bloqueantes. Quem compreender estes instant\u00e2neos consegue identificar muito rapidamente a causa principal e planear medidas. \u00c9 assim que o Slowlog funciona no dia a dia. Ap\u00f3s a ativa\u00e7\u00e3o, quando um limiar definido \u00e9 ultrapassado, o PHP-FPM grava um instant\u00e2neo da pilha no registo, enquanto o pedido continua a ser processado. Cada entrada come\u00e7a normalmente por \u201e#0\u201c, ou seja, no ponto em que se est\u00e1 a perder tempo. Entre os blocos, identifico frequentemente linhas em branco, o que simplifica a separa\u00e7\u00e3o dos eventos. Este m\u00e9todo fornece amostras em vez de perfis completos, mas, em contrapartida, oferece indica\u00e7\u00f5es precisas sobre verdadeiros pontos de lentid\u00e3o, como percursos de modelos complexos, hooks abandonados ou chamadas de rede lentas. Em fases de elevado tr\u00e1fego, associo estas indica\u00e7\u00f5es a picos de carga, o que me permite classificar com clareza as sec\u00e7\u00f5es de c\u00f3digo. Assim que identifico padr\u00f5es recorrentes, ajusto, por exemplo, o pm.max_children, utilizando para isso as informa\u00e7\u00f5es de \u00abConfigurar corretamente o pm.max_children\u00bb. Slowlog ak"}},"_wh_make_stage":"entwurf","_wh_make_research_date":"2026-11-04","_wh_make_sitemap_info":{"index":"https:\/\/webhosting.de\/sitemap_index.xml?wh_make=1","sitemaps":["https:\/\/webhosting.de\/post-sitemap1.xml","https:\/\/webhosting.de\/post-sitemap2.xml","https:\/\/webhosting.de\/post-sitemap3.xml","https:\/\/webhosting.de\/post-sitemap4.xml"],"url_count":3138,"fetched_at":"2026-11-04T08:42:44+00:00","selected_ids":[21778,21283,20986]},"_wh_make_draft_hash":"016b2c55b9cab2e07071f2ea4f161eb286f2d0a219fe75ba26187c02d291fc35","_wh_make_work":{"version":"2.1","identity":{"sheet_ref":"1VMjxV8Q73i0Q1HO6s-u4jNHVRF0snliGCeg97intLPs","sheet_name":"Tabellenblatt1","external_id":"1441","topic":"PHP-FPM Kapazit\u00e4tsplanung \u2013 gleichzeitige Requests, RAM-Verbrauch und Worker sinnvoll berechnen","keywords":["php-fpm worker","php hosting performance","pm max children"],"category_input":"780"},"config":{"research_model":"gpt-6.1-terra","writer_model":"gpt-6.1-terra","review_model":"gpt-6.1-sol","image_model":"gpt-image-2.5-flare","image_quality":"high","image_format":"webp","final_status":"draft","charts_enabled":true},"phase":"done","pending":null,"receipts":{"a30f732faedb022dff7d047c23bfaa79":"298f9970ba17d98d2021f49e05b94c8cfd5a70ce20fed3efab854ff68f792d2a","65cd50b20cbd876bb4fd58c3bdf44934":"b27cc8a654da90ee8c87acc2fda26ec5b6d0f365bc5b068edec8968b4946eae8","d361ac731b1801282b1dfad518a9980e":"eb2e0c2b3a630a5ff615858472f17519eb012c1f471c69a8905d0bd03a91e892","eda54726519da48991078aa1ed3291f2":"8e751e9064f88c072cf283964767ba29b46bafad11adbd96ffcea49890781a6a","77c2cc14796e37c2587bca66f0322bfc":"934280c60b1ed120c9a9f0b76c9c996287f87c4a6b68b64c97573cbf04fa45cd","1aaa04ff0a7f94917f643c91e840ffc1":"6b4aaecdaadc6ebeb902570a4c0463a905df86278a5349580da57f31e33b45bf","9466d09b5abf3fe9c0486a57e66f25b6":"ab53f89de5fae8c62c319edb2d2f06ba77e9e6528dd4e1d57c55368fadc4778b","4194a801e1a60c6bdd10435c442ec5db":"2a37e076a187ebbe7fc2d2e307e2d0aeb9c761124b062f2cdb42833b20d70a49","daa97577eb60e5f66f6e979206e6d731":"79f22865a3b1d8d862346d758fd5db896a327ff3202c827b0f5d5721833713bd","b3d5de56a2786cc64ded4984179e9c5a":"660a0bd0824f3cf11f9befcfb278f5262fd2fa07acc838960bfc7f02172a78bb","ba8d6723ad4a4acf492b59440afe2aac":"0886e0b1820f396557ddc0bd41bb2e508fbf35db07e56a76b42375fa6e86644f"},"parts":{"1":[{"id":"worker-und-anfragen","heading":"Was ein PHP-FPM Worker begrenzt","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"PHP-FPM verwaltet PHP-Prozesse in Pools. Ein ","ref":""},{"kind":"strong","text":"Worker","ref":""},{"kind":"text","text":" bearbeitet jeweils eine Anfrage; die Pool-Einstellung ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":" begrenzt die Zahl der gleichzeitig verf\u00fcgbaren Worker und damit die gleichzeitig bearbeiteten PHP-Anfragen dieses Pools. Bei mehreren Pools gilt die Grenze jeweils f\u00fcr den betreffenden Pool, nicht automatisch f\u00fcr den gesamten Server.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Diese Zahl ist weder die Zahl angemeldeter Besucher noch ein direkter Wert f\u00fcr Requests pro Sekunde. Ein Besucher kann mehrere Anfragen ausl\u00f6sen, w\u00e4hrend ein angemeldeter Nutzer zwischen zwei Aktionen keinen Worker belegt. Umgekehrt kann ein einzelner langsamer Request einen Worker l\u00e4nger binden als mehrere kurze Anfragen hintereinander.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch nicht jeder Seitenaufruf erreicht PHP-FPM. Liefert der Webserver eine statische Datei direkt aus oder beantwortet ein vorgeschalteter Cache eine Anfrage vollst\u00e4ndig, ist daf\u00fcr je nach Architektur kein PHP-Worker n\u00f6tig. Cache-Misses, eingeloggte Nutzer und Verwaltungsseiten k\u00f6nnen dagegen weiterhin PHP-Anfragen erzeugen und kurzfristig die Belegung erh\u00f6hen.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die Kapazit\u00e4tsplanung sind deshalb zwei getrennte Fragen entscheidend: Wie viele Worker passen mit Reserve in das verf\u00fcgbare RAM? Und wie viele Worker braucht der tats\u00e4chlich beim Pool eintreffende Verkehr, damit Anfragen nicht \u00fcberm\u00e4\u00dfig lange warten? Ein hoher Wert f\u00fcr ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":" beantwortet keine dieser Fragen allein.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Selbst wenn ausreichend Speicher vorhanden ist, k\u00f6nnen CPU, Datenbank oder externe Dienste die praktische Kapazit\u00e4t begrenzen. Zus\u00e4tzliche Worker erm\u00f6glichen dann zwar mehr parallele PHP-Arbeit, k\u00f6nnen aber gleichzeitig den Druck auf einen bereits langsamen Dienst erh\u00f6hen. Der Pool-Wert ist daher eine Betriebsgrenze und keine Leistungszusage.","ref":""}]}]},{"id":"prozessmanager","heading":"Prozessmanager und Warteschlange verstehen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Der ","ref":""},{"kind":"strong","text":"Prozessmanager","ref":""},{"kind":"text","text":" legt fest, wann PHP-FPM Worker bereitstellt. Bei ","ref":""},{"kind":"code","text":"static","ref":""},{"kind":"text","text":" entspricht die vorgehaltene Prozesszahl dem Wert von ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":". Das macht die Zahl der Prozesse gut planbar, bindet aber auch bei geringer Auslastung Ressourcen. Die Obergrenze selbst muss weiterhin zum verf\u00fcgbaren Speicher passen.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei ","ref":""},{"kind":"code","text":"dynamic","ref":""},{"kind":"text","text":" passt FPM die Prozesszahl an: Startzahl sowie minimale und maximale Zahl freier Worker werden zus\u00e4tzlich eingestellt. Bei ","ref":""},{"kind":"code","text":"ondemand","ref":""},{"kind":"text","text":" entstehen Worker erst bei Bedarf und werden nach einer konfigurierten Leerlaufzeit beendet. Das kann bei selten genutzten Pools Ressourcen sparen; bei einer pl\u00f6tzlichen Lastspitze muss jedoch zun\u00e4chst neue Prozesskapazit\u00e4t entstehen.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"table","caption":"Prozessmanager im Vergleich","headers":["Modus","Wichtige Einstellungen","Einsatz und Abw\u00e4gung"],"rows":[["static","pm.max_children","Feste Worker-Zahl; gut planbar, aber Ressourcenbindung im Leerlauf."],["dynamic","pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers","Anpassung an wechselnden Bedarf; freie und startende Worker m\u00fcssen abgestimmt werden."],["ondemand","pm.max_children, pm.process_idle_timeout","Worker bei Bedarf; spart bei selten genutzten Pools Ressourcen, Prozessstarts sind bei Lastanstieg zu ber\u00fccksichtigen."]],"source_ids":["S1"]},{"type":"paragraph","runs":[{"kind":"text","text":"Sind alle Worker besch\u00e4ftigt, k\u00f6nnen weitere Anfragen in der ","ref":""},{"kind":"strong","text":"Listener-Warteschlange","ref":""},{"kind":"text","text":" auf einen freien Prozess warten. Der FPM-Status zeigt unter anderem die aktuelle und die maximale Warteschlange. Ein einzelner hoher H\u00f6chstwert beschreibt allerdings nicht, ob der Pool gerade \u00fcberlastet ist; daf\u00fcr braucht er einen zeitlichen Bezug.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Eine gr\u00f6\u00dfere Warteschlange schafft keine zus\u00e4tzlichen Worker und beschleunigt keine langsame Datenbank. Sie kann Anfragen vor\u00fcbergehend aufnehmen, verlagert die Wartezeit aber lediglich vor die PHP-Bearbeitung. F\u00fcr die Entscheidung \u00fcber den Prozessmanager sind daher sowohl der typische Lastverlauf als auch die Folgen kurzer Spitzen wichtig.","ref":""}]}]},{"id":"speichergrundlagen","heading":"Worker-Speicher richtig einordnen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Der Speicherbedarf eines Workers l\u00e4sst sich nicht zuverl\u00e4ssig allein aus einer PHP-Konfigurationsgrenze ableiten. F\u00fcr die Planung sind Prozessdaten unter passenden Lastbedingungen hilfreicher. Dabei macht es einen Unterschied, ob du den residenten Speicher eines einzelnen Prozesses ansiehst oder den Verbrauch einer ganzen Gruppe von PHP-FPM Workern einsch\u00e4tzen willst.","ref":""}]},{"type":"paragraph","runs":[{"kind":"strong","text":"RSS","ref":""},{"kind":"text","text":" beschreibt residenten Speicher eines Prozesses. Nutzen mehrere Worker dieselben Speicherseiten, k\u00f6nnen diese in ihrem jeweiligen RSS enthalten sein. Addierst du die RSS-Werte aller Worker, erscheinen gemeinsam genutzte Seiten dadurch unter Umst\u00e4nden mehrfach; die Summe ist deshalb keine saubere Aussage \u00fcber den gemeinsam belegten physischen Speicher.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"strong","text":"PSS","ref":""},{"kind":"text","text":" verteilt gemeinsam genutzte Seiten anteilig auf die beteiligten Prozesse. Die Summe der PSS-Werte einer Prozessgruppe ist f\u00fcr deren Speicherplanung daher oft hilfreicher als die Summe der RSS-Werte. Sie bleibt dennoch eine Momentaufnahme: \u00c4ndert sich die Zahl der Prozesse, die Seiten teilen, \u00e4ndern sich auch die jeweiligen Anteile.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Betrachte mehrere Worker bei typischen und auch bei speicherintensiven Requests. Ein frisch gestarteter Prozess oder ein einzelner Durchschnitt kann den sp\u00e4teren Bedarf untersch\u00e4tzen. Die gesamte Pool-PSS bei verschiedenen Worker-Zahlen und Lastzust\u00e4nden hilft, einen konservativen N\u00e4herungswert abzuleiten; eine Hochrechnung auf mehr Worker bleibt wegen ver\u00e4nderlicher gemeinsamer und privater Anteile unsicher.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Das PHP-","ref":""},{"kind":"code","text":"memory_limit","ref":""},{"kind":"text","text":" ist keine zuverl\u00e4ssige Angabe f\u00fcr den gesamten Betriebssystem-Speicher eines FPM-Prozesses und ersetzt diese Beobachtung nicht. Gemeinsam genutzten Speicher, etwa durch OPcache, solltest du nicht pauschal ein zweites Mal vom Budget abziehen, wenn er bereits anteilig in der verwendeten Pool-PSS enthalten ist. Andere Dienste und eine Reserve m\u00fcssen trotzdem ber\u00fccksichtigt werden.","ref":""}]}]}],"2":[{"id":"ram-budget","heading":"RAM-Budget und Worker-Zahl berechnen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ausgangspunkt ist das tats\u00e4chlich verf\u00fcgbare RAM: auf einem Host der f\u00fcr die Dienste nutzbare Speicher, im Container das wirksame Speicherlimit. Ziehe davon den Bedarf des Betriebssystems, des Webservers, einer gegebenenfalls lokalen Datenbank und weiterer Dienste ab. Andere FPM-Pools und eine Reserve f\u00fcr schwankenden Verbrauch geh\u00f6ren ebenfalls in die Rechnung.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Der verbleibende Anteil ist das ","ref":""},{"kind":"strong","text":"Pool-Budget","ref":""},{"kind":"text","text":". F\u00fcr den Worker-Sch\u00e4tzwert beobachtest du die PSS-Summe der Pool-Worker bei verschiedenen Prozesszahlen und Lastzust\u00e4nden. Ber\u00fccksichtige typische Anfragen ebenso wie speicherintensive Endpunkte. Teile die jeweilige Summe durch die betrachtete Worker-Zahl und leite aus mehreren Beobachtungen einen vorsichtigen N\u00e4herungswert ab.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die folgende Rechnung ist ein illustratives Rechenbeispiel, keine Messung. Die angenommenen Werte dienen nur dazu, den Rechenweg zu zeigen; sie sind keine Empfehlung f\u00fcr eine bestimmte Anwendung. Das Ergebnis wird auf eine ganze Worker-Zahl abgerundet.","ref":""}]},{"type":"table","caption":"Illustrative RAM-Planung f\u00fcr einen einzelnen Pool","headers":["Rechenschritt","Annahme","Einordnung"],"rows":[["Wirksames RAM-Limit","4.096 MiB","Host- oder Containergrenze im Beispiel"],["Andere Dienste, Pools und Reserve","2.048 MiB","Zusammen angenommener Abzug"],["Budget f\u00fcr den betrachteten Pool","2.048 MiB","4.096 minus 2.048 MiB"],["PSS-N\u00e4herungswert je Worker","80 MiB","Angenommener konservativer Planungswert"],["Rechnerische RAM-Grenze","25 Worker","2.048 geteilt durch 80, abgerundet"]],"source_ids":["S3","S6"]},{"type":"paragraph","runs":[{"kind":"text","text":"Die 25 Worker sind keine garantierte sichere Einstellung. PSS verteilt gemeinsam genutzte Seiten anteilig und ver\u00e4ndert sich mit der Zahl der Prozesse, die diese Seiten teilen. Auch ein anderer Request-Mix kann den privaten Speicherbedarf verschieben; die Hochrechnung sollte daher gegen den beobachteten Gesamtverbrauch und das vorhandene Limit gepr\u00fcft werden.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ist gemeinsam genutzter Speicher wie OPcache bereits anteilig in der verwendeten PSS-Summe enthalten, ziehst du ihn nicht nochmals pauschal als vollst\u00e4ndigen Zusatzposten ab. Plane dennoch Reserve f\u00fcr Speicheranteile ein, die deine Betrachtung nicht erfasst. Gerade bei einem Containerlimit z\u00e4hlt letztlich der Verbrauch aller Prozesse innerhalb der Grenze, nicht nur die gesch\u00e4tzte Worker-Summe.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein frisch gestarteter Worker allein ist als Grundlage wenig aussagekr\u00e4ftig: Er hat m\u00f6glicherweise noch keinen anspruchsvollen Request bearbeitet. Vergleiche deshalb mehrere Zeitpunkte und halte fest, welche Endpunkte und wie viele Worker jeweils beteiligt waren. So l\u00e4sst sich erkennen, ob der gew\u00e4hlte N\u00e4herungswert auch bei ung\u00fcnstigeren, aber realistischen Betriebszust\u00e4nden tr\u00e4gt.","ref":""}]}]},{"id":"verkehr-und-belegung","heading":"Ben\u00f6tigte Worker aus Anfragen absch\u00e4tzen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Die RAM-Rechnung beschreibt, wie viele Worker voraussichtlich Platz finden. F\u00fcr den Bedarf z\u00e4hlt dagegen, wie viele PHP-Anfragen tats\u00e4chlich im betrachteten Pool eintreffen und wie lange sie einen Worker binden. Als erste N\u00e4herung gilt: mittlere gleichzeitig belegte Worker gleich PHP-Requests pro Sekunde multipliziert mit der mittleren Worker-Belegungszeit in Sekunden.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Illustratives Rechenbeispiel, keine Messung: Bei angenommenen 20 PHP-Requests pro Sekunde und einer mittleren Belegungszeit von 0,25 Sekunden sind im Mittel f\u00fcnf Worker besch\u00e4ftigt. Das ist ein Durchschnitt \u00fcber den betrachteten Zeitraum. Er sagt weder, dass immer genau f\u00fcnf Prozesse arbeiten, noch, dass f\u00fcnf als Pool-Limit f\u00fcr kurze Spitzen ausreichen.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die Anfragezahl verwendest du nicht ungepr\u00fcft s\u00e4mtliche Seitenaufrufe. Wenn ein Cache viele Antworten ausliefert, ohne PHP aufzurufen, belasten diese Treffer den Pool nicht. Umgekehrt k\u00f6nnen Cache-Misses, eingeloggte Besucher und Verwaltungszugriffe zeitweise mehr PHP-Arbeit ausl\u00f6sen, als ein \u00fcber den ganzen Tag gebildeter Durchschnitt vermuten l\u00e4sst.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die ","ref":""},{"kind":"strong","text":"Worker-Belegungszeit","ref":""},{"kind":"text","text":" umfasst auch Wartezeiten innerhalb der Bearbeitung, etwa auf eine Datenbank oder einen externen Dienst. Sie ist nicht automatisch mit der im Browser sichtbaren Antwortzeit gleichzusetzen. Nach ","ref":""},{"kind":"code","text":"fastcgi_finish_request()","ref":""},{"kind":"text","text":" kann PHP die Antwort bereits an den Client abgeschlossen haben und dennoch weitere Arbeit im Worker ausf\u00fchren.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr akzeptable Wartezeiten brauchst du Spielraum \u00fcber der mittleren Belegung. Wie gro\u00df er sein muss, h\u00e4ngt unter anderem von Lastschwankungen, langsamen Endpunkten und dem gew\u00fcnschten Antwortzeitziel ab. Eine Multiplikation von Spitzen-Requests pro Sekunde mit einer hohen Latenz-Perzentile kann ein vorsichtiger Szenariocheck sein, ist aber keine pr\u00e4zise Warteschlangenprognose.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Betrachte deshalb mehrere Zeitr\u00e4ume getrennt: Eine kurze Aktionsspitze und ruhiger Nachtverkehr k\u00f6nnen denselben Tagesmittelwert ergeben wie ein gleichm\u00e4\u00dfigerer Betrieb, stellen aber unterschiedliche Anforderungen. Steigt die Belegungszeit durch ein langsames Backend, w\u00e4chst bei gleicher Ankunftsrate auch die mittlere Zahl gebundener Worker. Der Bedarf ist damit nicht allein eine Eigenschaft des Besucheraufkommens.","ref":""}]}]},{"id":"pool-konfiguration","heading":"Pool-Einstellungen aus der Planung ableiten","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Stelle nun die RAM-basierte Obergrenze dem gesch\u00e4tzten Bedarf einschlie\u00dflich Spielraum gegen\u00fcber. Passt der Bedarf darunter, w\u00e4hle einen vorsichtigen Startwert f\u00fcr ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":", der das Budget nicht aussch\u00f6pfen muss. Im illustrativen Beispiel w\u00e4ren 25 die rechnerische RAM-Grenze, nicht automatisch die passende Einstellung; CPU und Backend k\u00f6nnen schon vorher begrenzen.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Liegt der gesch\u00e4tzte Bedarf \u00fcber der RAM-Grenze, l\u00f6st ein h\u00f6heres Limit den Widerspruch nicht: Es kann den Host oder Container unter Speicherdruck setzen. Umgekehrt kann ein sehr niedriges Limit Anfragen warten lassen. Verbessere in diesem Fall etwa die Ausf\u00fchrungszeit oder Cache-Nutzung und pr\u00fcfe, ob zus\u00e4tzliche Ressourcen oder eine Begrenzung der Eingangslast n\u00f6tig sind.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei ","ref":""},{"kind":"strong","text":"dynamic","ref":""},{"kind":"text","text":" legst du neben der Obergrenze die Startzahl sowie Mindest- und H\u00f6chstzahl freier Worker fest. Die Start- und Reservewerte sollten zur erwarteten Last passen und innerhalb der Obergrenze bleiben. Zu wenig vorgehaltene Kapazit\u00e4t kann bei pl\u00f6tzlicher Last zus\u00e4tzlichen Startbedarf bedeuten; dauerhaft viele freie Prozesse verbrauchen dagegen Ressourcen.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei ","ref":""},{"kind":"strong","text":"ondemand","ref":""},{"kind":"text","text":" entstehen Worker erst bei Bedarf; die Leerlaufzeit bis zu ihrer Beendigung wird gesondert eingestellt. Das kann f\u00fcr selten genutzte Pools sinnvoll sein, erfordert aber bei schnellen Lastanstiegen besondere Aufmerksamkeit. Auch hier begrenzt ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":" die Zahl der gleichzeitig verf\u00fcgbaren Worker des Pools.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Mehrere Websites auf demselben Host erhalten nicht unabh\u00e4ngig voneinander jeweils das gesamte freie RAM. Budgetiere ihre m\u00f6glichen Pool-Maxima zusammen mit den \u00fcbrigen Diensten und der Reserve. Eine gegebenenfalls konfigurierte globale FPM-Prozessgrenze kann zus\u00e4tzlich greifen, ersetzt aber weder die einzelnen Pool-Budgets noch die Pr\u00fcfung von CPU und Datenbankkapazit\u00e4t.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Pr\u00fcfe nach \u00c4nderungen die tats\u00e4chliche Auslastung und Wartezeiten \u00fcber geeignete Zeitr\u00e4ume, statt den Startwert als endg\u00fcltig anzusehen. Bei Managed Hosting sind Prozessdaten oder Pool-Einstellungen m\u00f6glicherweise nicht direkt zug\u00e4nglich; nutze dann die Metriken und freigegebenen Optionen des Anbieters. Welche Einstellungen verf\u00fcgbar sind, h\u00e4ngt au\u00dferdem von PHP-Version und Betriebsumgebung ab.","ref":""}]}]}],"3":[{"id":"status-und-messung","heading":"FPM-Status und Speicher beobachten","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Die FPM-Statusseite zeigt, ob die geplanten Worker unter realer Last ausreichen. ","ref":""},{"kind":"strong","text":"Sch\u00fctze den Statusendpunkt","ref":""},{"kind":"text","text":" vor \u00f6ffentlichem Zugriff: Er kann sensible Angaben \u00fcber Anfragen und Ressourcen preisgeben. Ein separat konfigurierter Status-Listener kann auch bei einem ausgelasteten Hauptpool erreichbar bleiben; pr\u00fcfe seine Verf\u00fcgbarkeit und Einrichtung f\u00fcr deine PHP-Version und Webserver-Konfiguration.","ref":""},{"kind":"citation","text":"","ref":"S1"},{"kind":"citation","text":"","ref":"S2"}]},{"type":"table","caption":"FPM-Statuswerte im zeitlichen Zusammenhang auswerten","headers":["Statuswert","Einordnung","Anschlussfrage"],"rows":[["active processes \/ idle processes","Aktuell besch\u00e4ftigte und freie Worker","Bleiben bei Lastspitzen freie Worker verf\u00fcgbar?"],["listen queue \/ max listen queue","Aktuelle und bisher maximale Warteschlangenl\u00e4nge","W\u00e4chst die Warteschlange w\u00e4hrend langsamer Antworten?"],["max children reached","Z\u00e4hler f\u00fcr das Erreichen der Worker-Grenze bei dynamic oder ondemand","Steigt der Z\u00e4hler im betrachteten Zeitraum?"],["slow requests","Z\u00e4hler langsamer Anfragen","F\u00e4llt sein Anstieg mit l\u00e4ngeren Antwortzeiten zusammen?"]],"source_ids":["S2"]},{"type":"paragraph","runs":[{"kind":"text","text":"Betrachte die Werte als ","ref":""},{"kind":"strong","text":"Zeitreihen","ref":""},{"kind":"text","text":" zusammen mit Anfragevolumen und Antwortzeiten. Ein alter H\u00f6chstwert der Warteschlange beweist keine aktuelle \u00dcberlastung; ebenso ist bei Z\u00e4hlern ihr Anstieg seit der letzten Beobachtung aussagekr\u00e4ftiger als der blo\u00dfe Gesamtwert. Ber\u00fccksichtige dabei den Poolstart beziehungsweise Neustarts, durch die sich der Bezugszeitraum \u00e4ndert.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr einen bekannten FPM-Worker kannst du auf einem Linux-System mit verf\u00fcgbarer proc-Schnittstelle aggregierte Speicherwerte lesend abrufen. Ersetze ","ref":""},{"kind":"code","text":"PID","ref":""},{"kind":"text","text":" durch die tats\u00e4chliche Prozess-ID; du ben\u00f6tigst die entsprechenden Zugriffsrechte. Wiederhole die Beobachtung f\u00fcr mehrere Worker und Lastzust\u00e4nde, statt aus einem einzelnen Prozess eine dauerhafte Poolgr\u00f6\u00dfe abzuleiten.","ref":""},{"kind":"citation","text":"","ref":"S6"}]},{"type":"code","language":"bash","code":"cat \/proc\/PID\/smaps_rollup","source_ids":["S6"]}]},{"id":"engpaesse-diagnostizieren","heading":"Langsame Requests und Warteschlangen untersuchen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ein Shop kann viele aktive Worker anzeigen, obwohl nicht die PHP-Ausf\u00fchrung selbst der urspr\u00fcngliche Engpass ist. Warten Anfragen auf langsame Datenbankabfragen, bleiben die Worker w\u00e4hrenddessen gebunden. Treffen weitere Anfragen ein, kann die Listener-Warteschlange wachsen und die Antwortzeit steigen, selbst wenn die CPU noch Reserven zeigt.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Eine h\u00f6here Worker-Grenze l\u00e4sst in dieser Situation m\u00f6glicherweise mehr Anfragen gleichzeitig zur Datenbank gelangen. Das kann den ","ref":""},{"kind":"strong","text":"Backend-Druck","ref":""},{"kind":"text","text":" erh\u00f6hen und Wartezeiten weiter verl\u00e4ngern. Vergleiche deshalb den zeitlichen Verlauf von FPM-Auslastung und Warteschlange mit Datenbanklast, langsamen Abfragen und externen Dienstaufrufen, bevor du die Grenze erh\u00f6hst.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Das FPM-Slowlog hilft, lange PHP-Aufrufe einzugrenzen: F\u00fcr Anfragen \u00fcber einer konfigurierten Schwelle kann FPM einen Backtrace protokollieren. Dieser zeigt einen Ausf\u00fchrungspunkt und ist kein vollst\u00e4ndiges Profil der gesamten Anfrage. Wiederkehrende Stellen lassen sich mit Anfragedauer und Backend-Metriken abgleichen; die ","ref":""},{"kind":"internal_link","text":"Anleitung zum Auswerten des PHP-FPM Slowlogs","ref":"I3"},{"kind":"text","text":" erl\u00e4utert die weitere Analyse.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch ein Timeout ist von der eigentlichen Kapazit\u00e4t zu trennen. Bei nginx bezeichnet ","ref":""},{"kind":"code","text":"fastcgi_read_timeout","ref":""},{"kind":"text","text":" den zul\u00e4ssigen Abstand zwischen aufeinanderfolgenden Lesevorg\u00e4ngen vom FastCGI-Server, nicht pauschal die gesamte Requestdauer. Ein h\u00f6herer Wert kann l\u00e4ngeres Warten zulassen, schafft aber weder zus\u00e4tzliche Worker noch beschleunigt er die Datenbank.","ref":""},{"kind":"citation","text":"","ref":"S5"}]}]},{"id":"kapazitaet-entscheiden","heading":"Kapazit\u00e4tsgrenzen und n\u00e4chste Schritte","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Reicht das RAM-Budget nicht f\u00fcr den gesch\u00e4tzten Bedarf, l\u00f6st eine h\u00f6here Einstellung f\u00fcr ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":" den Zielkonflikt nicht: Zus\u00e4tzliche Prozesse ben\u00f6tigen ebenfalls Speicher. Pr\u00fcfe stattdessen, ob sich die Zahl der PHP-Anfragen oder die Dauer ihrer Worker-Belegung senken l\u00e4sst. Welche Ma\u00dfnahme sinnvoll ist, h\u00e4ngt davon ab, wo die beobachtete Last entsteht.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein besser genutzter Cache kann wiederholte Aufrufe abfangen, w\u00e4hrend schnellere PHP-Ausf\u00fchrung und Datenbankzugriffe Worker fr\u00fcher freigeben. Geeignete Hintergrundarbeit l\u00e4sst sich aus dem unmittelbaren Anfragepfad auslagern; auch diese Arbeit ben\u00f6tigt allerdings eigene Ressourcen. Eine Lastbegrenzung sch\u00fctzt bei Spitzen das Backend, kann aber dazu f\u00fchren, dass Anfragen warten oder abgewiesen werden.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Zus\u00e4tzliches RAM kann eine h\u00f6here Worker-Zahl erm\u00f6glichen, wenn Speicher tats\u00e4chlich die ma\u00dfgebliche Grenze ist. Sind CPU, Datenbank oder ein externer Dienst bereits ausgelastet, muss deren Kapazit\u00e4t ebenfalls ber\u00fccksichtigt werden. Mehr Speicher allein garantiert deshalb weder k\u00fcrzere Antwortzeiten noch einen h\u00f6heren Durchsatz.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Steigt der Speicherbedarf einzelner Worker \u00fcber ihre Lebensdauer, kann ","ref":""},{"kind":"code","text":"pm.max_requests","ref":""},{"kind":"text","text":" deren regelm\u00e4\u00dfiges Ersetzen veranlassen. Das kann beim Umgang mit Speicherlecks in Drittbibliotheken helfen, behebt aber nicht deren Ursache. Beobachte nach einer \u00c4nderung weiterhin Pool-Speicher und Anfrageverhalten, statt den Neustartmechanismus als Ersatz f\u00fcr die Fehlersuche zu behandeln.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr eine breitere Architekturentscheidung bietet der ","ref":""},{"kind":"internal_link","text":"Vergleich von NGINX Unit und PHP-FPM","ref":"I1"},{"kind":"text","text":" Kontext; NGINX Unit ist archiviert und wird nicht mehr gepflegt. Unabh\u00e4ngig von der gew\u00e4hlten Architektur solltest du \u00c4nderungen anhand von ","ref":""},{"kind":"strong","text":"Zeitreihen","ref":""},{"kind":"text","text":" pr\u00fcfen: Vergleiche bei \u00e4hnlichem Anfragevolumen Warteschlange, Worker-Auslastung, Speicher und Antwortzeiten. So l\u00e4sst sich erkennen, ob eine Anpassung den Engpass tats\u00e4chlich entsch\u00e4rft oder lediglich verlagert hat.","ref":""},{"kind":"citation","text":"","ref":"S2"}]}]}]},"plan":{"reader_question":"Wie viele gleichzeitige PHP-Anfragen kann ein Server innerhalb seines RAM-Budgets bearbeiten, und wie l\u00e4sst sich pm.max_children passend zum tats\u00e4chlichen Anfrageverkehr planen?","sections":[{"id":"worker-und-anfragen","heading":"Was ein PHP-FPM Worker begrenzt","part":1,"target_words":270,"purpose":"Pool, Worker und pm.max_children erkl\u00e4ren und gleichzeitig bearbeitete PHP-Anfragen von Besuchern und Requests pro Sekunde abgrenzen. An Cache-Treffern und statischen Dateien zeigen, warum nicht jeder Seitenaufruf einen Worker belegt. In kurzen Abs\u00e4tzen RAM-Grenze und ben\u00f6tigte Auslastung als getrennte Fragen einf\u00fchren.","source_ids":["S1"],"internal_link_ids":[]},{"id":"prozessmanager","heading":"Prozessmanager und Warteschlange verstehen","part":1,"target_words":270,"purpose":"static, dynamic und ondemand mit Startverhalten, freien Workern und Ressourcenfolgen unterscheiden. Erl\u00e4utern, wie die Listener-Warteschlange bei belegten Workern Wartezeit aufnimmt, aber keine zus\u00e4tzliche Verarbeitungskapazit\u00e4t schafft. Eine kompakte Vergleichstabelle zu Einstellungen, Einsatzf\u00e4llen und Nachteilen vorsehen.","source_ids":["S1","S2"],"internal_link_ids":[]},{"id":"speichergrundlagen","heading":"Worker-Speicher richtig einordnen","part":1,"target_words":270,"purpose":"RSS und PSS anhand gemeinsam genutzter Speicherseiten unterscheiden; erkl\u00e4ren, warum summiertes RSS mehrfach z\u00e4hlen kann und PSS nur eine last- und prozesszahlabh\u00e4ngige Momentaufnahme ist. memory_limit vom tats\u00e4chlichen Prozessspeicher abgrenzen und OPcache bei bereits enthaltener PSS nicht erneut pauschal abziehen.","source_ids":["S3"],"internal_link_ids":[]},{"id":"ram-budget","heading":"RAM-Budget und Worker-Zahl berechnen","part":2,"target_words":300,"purpose":"Vom wirksamen Host- oder Containerlimit Dienste, andere Pools und Reserve abziehen. Pool-PSS bei mehreren Worker-Zahlen und repr\u00e4sentativen sowie speicherintensiven Requests betrachten; aus einem konservativen N\u00e4herungswert Budget geteilt durch Worker-Speicher abrunden. Eine illustrative Rechnung und Tabelle mit Annahmen und Unsicherheiten planen; keine Messung suggerieren.","source_ids":["S3","S6"],"internal_link_ids":[]},{"id":"verkehr-und-belegung","heading":"Ben\u00f6tigte Worker aus Anfragen absch\u00e4tzen","part":2,"target_words":280,"purpose":"Mittlere Belegung als PHP-Requests pro Sekunde mal mittlere Worker-Bindungszeit herleiten. Das ausdr\u00fccklich illustrative Beispiel mit 20 Requests pro Sekunde und 0,25 Sekunden ergibt im Mittel f\u00fcnf belegte Worker; Lastspitzen und Wartezeit erfordern Spielraum. Datenbankwartezeit und Arbeit nach fastcgi_finish_request() einbeziehen; Perzentil-Multiplikation nicht als Warteschlangenprognose ausgeben.","source_ids":["S4"],"internal_link_ids":[]},{"id":"pool-konfiguration","heading":"Pool-Einstellungen aus der Planung ableiten","part":2,"target_words":270,"purpose":"RAM-Obergrenze und gesch\u00e4tzten Bedarf gegen\u00fcberstellen und einen vorsichtigen Startwert f\u00fcr pm.max_children sowie passende dynamic- oder ondemand-Einstellungen erl\u00e4utern. Mehrere Pools und gegebenenfalls globale Prozessgrenze gemeinsam budgetieren; CPU und Backend-Kapazit\u00e4t begrenzen die Entscheidung zus\u00e4tzlich. Managed-Hosting-Zugriff und Versionsabh\u00e4ngigkeit ber\u00fccksichtigen.","source_ids":["S1"],"internal_link_ids":[]},{"id":"status-und-messung","heading":"FPM-Status und Speicher beobachten","part":3,"target_words":270,"purpose":"Gesch\u00fctzte Statusseite und gegebenenfalls separaten Status-Listener einordnen. Aktive und freie Worker, Warteschlange, max children reached und slow requests als Zeitreihen mit Poolstart und Antwortzeiten auswerten; eine Statuswert-Tabelle vorsehen. Den lesenden Befehl cat \/proc\/PID\/smaps_rollup samt PID-Ersatz und Berechtigungsgrenzen nennen.","source_ids":["S1","S2","S6"],"internal_link_ids":[]},{"id":"engpaesse-diagnostizieren","heading":"Langsame Requests und Warteschlangen untersuchen","part":3,"target_words":270,"purpose":"Am Shop mit langsamer Datenbank zeigen, warum mehr Worker Backend-Druck erh\u00f6hen k\u00f6nnen. Slowlog als Einstieg in die Ursachenanalyse mit Datenbanklast und externen Aufrufen verkn\u00fcpfen. fastcgi_read_timeout korrekt als Abstand zwischen Lesevorg\u00e4ngen erkl\u00e4ren; ein h\u00f6herer Timeout schafft keine Kapazit\u00e4t. Vertiefenden Slowlog-Artikel zuordnen.","source_ids":["S1","S5"],"internal_link_ids":["I3"]},{"id":"kapazitaet-entscheiden","heading":"Kapazit\u00e4tsgrenzen und n\u00e4chste Schritte","part":3,"target_words":260,"purpose":"Bei unzureichendem RAM-Budget Cache, schnellere Ausf\u00fchrung, ausgelagerte Arbeit, Lastbegrenzung und zus\u00e4tzliche Ressourcen gegeneinander abw\u00e4gen. pm.max_requests als m\u00f6glichen Umgang mit Lecks, nicht als Ursachenbehebung erkl\u00e4ren. F\u00fcr Architekturentscheidungen auf den erg\u00e4nzenden Vergleich mit dem archivierten NGINX Unit verweisen und \u00c4nderungen anhand beobachteter Zeitreihen \u00fcberpr\u00fcfen.","source_ids":["S1","S2"],"internal_link_ids":["I1"]}]},"repairs":0,"reviews":1,"issues":[],"guard":{"content_md5":"b99a6321bcea002fa2d3704eb8c99934","title":"Planeamento da capacidade do PHP-FPM: calcular o n\u00famero de workers, a mem\u00f3ria RAM e o n\u00famero de pedidos simult\u00e2neos","slug":"php-fpm-planeamento-de-capacidade-workers-ram-pedidos","excerpt":"Quantos workers do PHP-FPM cabem na RAM e quantos s\u00e3o necess\u00e1rios para o tr\u00e1fego real? O artigo explica a medi\u00e7\u00e3o do PSS, a ocupa\u00e7\u00e3o dos workers e os limites do par\u00e2metro pm.max_children.","status":"draft","featured_media":22160},"verify":{"content_md5":"b99a6321bcea002fa2d3704eb8c99934","title":"Planeamento da capacidade do PHP-FPM: calcular o n\u00famero de workers, a mem\u00f3ria RAM e o n\u00famero de pedidos simult\u00e2neos","slug":"php-fpm-planeamento-de-capacidade-workers-ram-pedidos","excerpt":"Quantos workers do PHP-FPM cabem na RAM e quantos s\u00e3o necess\u00e1rios para o tr\u00e1fego real? O artigo explica a medi\u00e7\u00e3o do PSS, a ocupa\u00e7\u00e3o dos workers e os limites do par\u00e2metro pm.max_children.","status":"draft","featured_media":22160},"row_number":1936,"created_at":"2026-11-04T13:33:59+00:00","editorial_policy":{"version":"2.1.6","max_repairs":4,"review_model_from_attempt":2},"updated_at":"2026-11-04T13:38:51+00:00","verified_at":"2026-11-04T13:38:34+00:00"},"_wh_make_research":"# Recherchebriefing: PHP-FPM-Kapazit\u00e4tsplanung\n\nRecherchebezug: 4. November 2026  \nGeplanter Artikelumfang: 2.400\u20132.700 W\u00f6rter\n\n## Leserfrage und Ziel\n\nWie viele gleichzeitige PHP-Anfragen kann ein Server bearbeiten, ohne seinen Speicher zu ersch\u00f6pfen, und wie l\u00e4sst sich daf\u00fcr ein sinnvoller Wert f\u00fcr pm.max_children bestimmen?\n\nDer Artikel sollte zwei Fragen getrennt beantworten: Wie viele Worker passen voraussichtlich in das verf\u00fcgbare RAM? Und wie viele werden ben\u00f6tigt, um den tats\u00e4chlichen Anfrageverkehr mit akzeptabler Wartezeit zu bearbeiten? Der kleinere Wert ist nicht automatisch die endg\u00fcltige Einstellung: CPU, Datenbank, externe Dienste und Lastspitzen k\u00f6nnen die praktische Kapazit\u00e4t weiter begrenzen.\n\nZielgruppe sind Administratoren und technisch interessierte Betreiber von PHP-Websites. Vorausgesetzt werden Grundkenntnisse zu Webserver, PHP-FPM, Linux-Prozessen und Konfigurationsdateien. Auf Managed Hosting kann der Zugriff auf Prozessdaten und Pool-Einstellungen eingeschr\u00e4nkt sein; dort sind Anbieter-Metriken und freigegebene Einstellungen die Ausgangsbasis.\n\n## Gesicherte Funktionsweise\n\nPHP-FPM verwaltet Worker in Pools. Ein Worker bearbeitet eine PHP-Anfrage; pm.max_children begrenzt pro Pool die Zahl gleichzeitig bearbeiteter Anfragen. Das ist weder die Zahl gleichzeitig angemeldeter Besucher noch ein direkter Wert f\u00fcr Requests pro Sekunde. Statische Dateien oder vollst\u00e4ndig zwischengespeicherte Antworten m\u00fcssen abh\u00e4ngig von der Architektur keinen PHP-Worker belegen. ([php.net](https:\/\/www.php.net\/install.fpm.configuration?utm_source=openai))\n\nDie Prozessmanager unterscheiden sich darin, wann Worker bereitstehen:\n\n- static h\u00e4lt die durch pm.max_children festgelegte Prozesszahl vor. Das erleichtert die Planung bei gleichm\u00e4\u00dfiger Last, bindet aber auch im Leerlauf Ressourcen.\n- dynamic passt die Anzahl zwischen Bedarf und Obergrenze an. Startzahl und gew\u00fcnschte freie Worker werden gesondert konfiguriert.\n- ondemand startet Worker bei Bedarf und beendet sie nach einer konfigurierten Leerlaufzeit. Das kann bei selten genutzten Pools Ressourcen sparen; bei pl\u00f6tzlich eintreffender Last muss der Startbedarf ber\u00fccksichtigt werden. ([php.net](https:\/\/www.php.net\/install.fpm.configuration?utm_source=openai))\n\nSind alle Worker besch\u00e4ftigt, k\u00f6nnen weitere Anfragen in der Listener-Warteschlange warten. Deren Gr\u00f6\u00dfe ist kein Ersatz f\u00fcr Bearbeitungskapazit\u00e4t: Eine gr\u00f6\u00dfere Warteschlange kann Wartezeit verlagern, ohne die Ursache langsamer Requests zu beseitigen. Der FPM-Status zeigt unter anderem aktive und freie Prozesse, die aktuelle und maximale Warteschlange sowie Hinweise auf erreichte Worker-Grenzen. ([php.net](https:\/\/www.php.net\/fpm.status.php?utm_source=openai))\n\n## RAM-Budget und Worker-Verbrauch\n\nDer Artikel sollte die Rechnung in nachvollziehbaren Schritten aufbauen:\n\n1. Verf\u00fcgbares RAM beziehungsweise das wirksame Containerlimit bestimmen.\n2. Speicher f\u00fcr Betriebssystem, Webserver, Datenbank, andere Dienste, \u00fcbrige FPM-Pools und eine Reserve abziehen.\n3. Den verbleibenden Budgetanteil f\u00fcr den betrachteten Pool festlegen.\n4. Einen unter repr\u00e4sentativer Last beobachteten Speicherbedarf je Worker sch\u00e4tzen.\n5. Budget durch diesen Sch\u00e4tzwert teilen und abrunden. Das Ergebnis ist ein RAM-basierter Planungswert, keine Garantie.\n\nWichtig ist die Messmethode. RSS z\u00e4hlt residenten Speicher pro Prozess und kann gemeinsam genutzte Seiten bei mehreren Workern mehrfach enthalten. PSS verteilt gemeinsam genutzte Seiten anteilig auf die beteiligten Prozesse. Damit ist die Summe der PSS-Werte f\u00fcr eine Prozessgruppe oft hilfreicher als die Summe ihrer RSS-Werte. PSS bleibt aber eine Momentaufnahme und ver\u00e4ndert sich unter anderem mit der Zahl der Prozesse, die Seiten teilen. ([docs.kernel.org](https:\/\/docs.kernel.org\/7.0\/filesystems\/proc.html?utm_source=openai))\n\nF\u00fcr die Planung sollten mehrere Worker \u00fcber typische und speicherintensive Requests hinweg betrachtet werden, nicht nur ein frisch gestarteter Prozess. Ein sinnvoller Ansatz ist, die gesamte Pool-PSS bei verschiedenen Worker-Zahlen und Lastzust\u00e4nden zu beobachten und daraus einen konservativen N\u00e4herungswert abzuleiten. Gemeinsam genutzten Speicher, etwa durch OPcache, nicht pauschal zus\u00e4tzlich abziehen, wenn er bereits anteilig in der verwendeten PSS-Summe steckt. Eine Extrapolation bleibt unsicher, weil sich gemeinsame und private Anteile bei anderer Prozesszahl und anderem Workload \u00e4ndern.\n\nDas PHP-memory_limit ist keine zuverl\u00e4ssige Angabe des gesamten Betriebssystem-Speichers eines FPM-Prozesses und ersetzt deshalb keine Prozessmessung. Ebenso ist ein einzelner Durchschnittswert ungeeignet, wenn seltene Endpunkte erheblich mehr Speicher belegen.\n\n## Zusammenhang zwischen Requests und ben\u00f6tigten Workern\n\nAls erste N\u00e4herung kann der Artikel die mittlere Belegung erl\u00e4utern:\n\nMittlere gleichzeitig belegte Worker \u2248 PHP-Requests pro Sekunde \u00d7 mittlere Worker-Belegungszeit in Sekunden.\n\nDie Anfragezahl muss sich auf tats\u00e4chlich bei diesem Pool eintreffende PHP-Requests beziehen. Die Belegungszeit meint die Zeit, in der der Worker gebunden ist, einschlie\u00dflich relevanter Wartezeiten auf Datenbank oder externe Dienste. Sie ist nicht ohne Weiteres identisch mit der im Browser sichtbaren Antwortzeit. PHP-FPM unterst\u00fctzt au\u00dferdem Verarbeitung nach dem Senden der Antwort \u00fcber fastcgi_finish_request(); der Worker kann dadurch weiterhin besch\u00e4ftigt sein. ([php.net](https:\/\/www.php.net\/manual\/de\/install.fpm.php?utm_source=openai))\n\nIllustratives Rechenbeispiel, keine Messung: Bei angenommenen 20 PHP-Requests pro Sekunde und durchschnittlich 0,25 Sekunden Worker-Belegung ergeben sich im Mittel f\u00fcnf gleichzeitig belegte Worker. Daraus folgt nicht, dass f\u00fcnf Worker f\u00fcr einen zuverl\u00e4ssigen Betrieb gen\u00fcgen: Schwankende Ankunftsraten, langsame Endpunkte und das gew\u00fcnschte Antwortzeitziel erfordern zus\u00e4tzlichen Spielraum. Die Multiplikation von Spitzen-RPS mit einer hohen Latenz-Perzentile ist ebenfalls keine pr\u00e4zise Warteschlangenprognose; sie kann h\u00f6chstens als vorsichtiger Szenariocheck dienen.\n\n## Relevante Praxisf\u00e4lle\n\n**1. Cache-lastige Website:** Der Webserver oder ein vorgeschalteter Cache beantwortet viele Aufrufe ohne PHP. F\u00fcr die FPM-Planung z\u00e4hlt daher die verbleibende PHP-Last, besonders bei Cache-Misses, eingeloggten Nutzern und Administrationszugriffen. Ein niedriger durchschnittlicher FPM-Durchsatz schlie\u00dft kurzzeitige Lastspitzen nicht aus.\n\n**2. Shop mit langsamer Datenbank:** Viele aktive Worker und eine wachsende Warteschlange k\u00f6nnen auf langsame SQL-Abfragen oder blockierende externe Aufrufe hindeuten. Mehr Worker k\u00f6nnten gleichzeitig mehr Druck auf die Datenbank aus\u00fcben. Deshalb zuerst Belegungsdauer, Datenbanklast und langsame Requests gemeinsam betrachten; slowlog kann bei der Suche nach langen PHP-Aufrufen helfen. ([php.net](https:\/\/www.php.net\/install.fpm.configuration?utm_source=openai))\n\n**3. Mehrere Websites auf einem Host:** Jeder Pool hat eigene Grenzen, alle konkurrieren aber um dasselbe RAM und dieselbe CPU. Die Summe der m\u00f6glichen Pool-Maxima muss zusammen mit anderen Diensten und Reserve bewertet werden. Eine globale FPM-Prozessgrenze kann zus\u00e4tzlich relevant sein; sie ersetzt keine saubere Budgetierung je Pool. ([php.net](https:\/\/www.php.net\/install.fpm.configuration?utm_source=openai))\n\n**4. Container mit Speicherlimit:** Nicht vom physischen Host-RAM ausgehen, sondern vom tats\u00e4chlich geltenden Limit und den darin enthaltenen Prozessen. Bei knappen Limits zus\u00e4tzlich Reserven und beobachteten Gesamtverbrauch ber\u00fccksichtigen; die reine Worker-Rechnung bildet nicht alle Speicheranteile ab.\n\n## Diagnose, Entscheidungen und Grenzen\n\nDie FPM-Statusseite sollte nur intern beziehungsweise f\u00fcr ausdr\u00fccklich berechtigte Clients erreichbar sein, da sie sensible Informationen \u00fcber Requests und Ressourcen offenlegen kann. Ein separat konfigurierter Status-Listener kann die Abfrage auch dann erm\u00f6glichen, wenn der Hauptpool besch\u00e4ftigt ist. Seine Verf\u00fcgbarkeit und Einrichtung sind f\u00fcr die eingesetzte PHP-Version und Webserver-Konfiguration zu pr\u00fcfen. ([php.net](https:\/\/www.php.net\/install.fpm.configuration?utm_source=openai))\n\nF\u00fcr die Auswertung sind Zeitreihen wichtiger als ein einzelner Statusabruf: aktive und freie Worker, listen queue, max listen queue, max children reached und slow requests zusammen mit Anfragevolumen und Antwortzeiten betrachten. Maximal- und Z\u00e4hlerwerte brauchen den zeitlichen Bezug zum Poolstart; aus einem alten H\u00f6chstwert allein folgt keine aktuelle \u00dcberlastung. ([php.net](https:\/\/www.php.net\/fpm.status.php?utm_source=openai))\n\nWenn das RAM-Budget weniger Worker erlaubt als der Workload ben\u00f6tigt, sind Alternativen: PHP-Ausf\u00fchrung oder Datenbankzugriffe beschleunigen, Cache-Treffer erh\u00f6hen, Hintergrundarbeit auslagern, Last begrenzen oder Ressourcen erweitern. pm.max_requests kann das regelm\u00e4\u00dfige Ersetzen von Workern erm\u00f6glichen, etwa als Umgang mit Speicherlecks in Drittbibliotheken; es behebt deren Ursache nicht. ([php.net](https:\/\/www.php.net\/install.fpm.configuration?utm_source=openai))\n\nEin h\u00e4ufiger Fehler ist, den nginx-Wert fastcgi_read_timeout als gesamte maximale Requestdauer zu interpretieren. Laut nginx-Dokumentation betrifft er den Abstand zwischen aufeinanderfolgenden Lesevorg\u00e4ngen vom FastCGI-Server. Ein h\u00f6herer Timeout schafft zudem keine zus\u00e4tzliche Worker-Kapazit\u00e4t. ([nginx.org](https:\/\/nginx.org\/en\/docs\/http\/ngx_http_fastcgi_module.html?utm_source=openai))\n\n## Sichere Beispiele und Tabellenplanung\n\n**Terminalbefehl, nur lesend:** F\u00fcr einen bekannten und berechtigten Linux-Prozess kann cat \/proc\/PID\/smaps_rollup die aggregierten Speicherwerte anzeigen. PID ist durch die Prozess-ID zu ersetzen. Zugriff und Verf\u00fcgbarkeit h\u00e4ngen von System und Berechtigungen ab; nicht alle Systeme stellen dieselbe Schnittstelle bereit. Keine produktiven \u00c4nderungen oder Lasttests ausf\u00fchren. ([kernel.org](https:\/\/www.kernel.org\/doc\/html\/v6.12\/filesystems\/proc.html?utm_source=openai))\n\nF\u00fcr den sp\u00e4teren Artikel eignen sich drei Tabellen:\n\n- Prozessmanager: Startverhalten, ben\u00f6tigte Einstellungen, Einsatzfall und abzuw\u00e4gende Nachteile.\n- Statuswerte: Bedeutung, Aussage \u00fcber aktuellen Zustand oder bisherigen H\u00f6chstwert, m\u00f6gliche Anschlussdiagnose.\n- Kapazit\u00e4tsrechnung: RAM-Budget, Messmethode, Worker-Sch\u00e4tzwert, rechnerische Obergrenze und ausdr\u00fccklich ausgewiesene Unsicherheiten.\n\nEin Chart ist mangels geeigneter Messdaten nicht erforderlich. Ein Zahlenbeispiel im Text gen\u00fcgt, sofern es ausdr\u00fccklich als illustrativ gekennzeichnet ist.\n\n## Quelldokumente f\u00fcr die Artikelplanung\n\n- S1: PHP-Handbuch, FPM Configuration \u2013 Prozessmanager, Pool-Limits, Status-Listener und Slowlog. ([php.net](https:\/\/www.php.net\/install.fpm.configuration?utm_source=openai))\n- S2: PHP-Handbuch, FPM Status Page \u2013 Statusfelder und Schutz des Endpunkts. ([php.net](https:\/\/www.php.net\/fpm.status.php?utm_source=openai))\n- S3: Linux-Kernel-Dokumentation, \/proc Filesystem \u2013 RSS, PSS und smaps_rollup. ([docs.kernel.org](https:\/\/docs.kernel.org\/7.0\/filesystems\/proc.html?utm_source=openai))\n- S4: nginx-Dokumentation, FastCGI-Modul \u2013 insbesondere die Semantik von fastcgi_read_timeout. ([nginx.org](https:\/\/nginx.org\/en\/docs\/http\/ngx_http_fastcgi_module.html?utm_source=openai))\n- S5: PHP-Handbuch, FPM-\u00dcberblick \u2013 Funktionen einschlie\u00dflich fastcgi_finish_request(). ([php.net](https:\/\/www.php.net\/manual\/de\/install.fpm.php?utm_source=openai))\n\nVor Ver\u00f6ffentlichung sollten eingesetzte PHP- und Linux-Versionen sowie die tats\u00e4chlich verf\u00fcgbare Hosting-Oberfl\u00e4che gepr\u00fcft werden. Die genannten Dokumente beschreiben Funktionen, belegen aber keine universellen Performancewerte f\u00fcr eine konkrete Installation.","_wh_make_sources":{"S1":{"id":"S1","url":"https:\/\/www.php.net\/install.fpm.configuration?utm_source=openai","title":"PHP: Configura\u00e7\u00e3o - Manual"},"S2":{"id":"S2","url":"https:\/\/www.php.net\/fpm.status.php?utm_source=openai","title":"PHP: P\u00e1gina de estado - Manual"},"S3":{"id":"S3","url":"https:\/\/docs.kernel.org\/7.0\/filesystems\/proc.html?utm_source=openai","title":"O sistema de ficheiros \/proc \u2014 Documenta\u00e7\u00e3o do kernel do Linux"},"S4":{"id":"S4","url":"https:\/\/www.php.net\/manual\/de\/install.fpm.php?utm_source=openai","title":"PHP: Gestor de Processos FastCGI (FPM) - Manual"},"S5":{"id":"S5","url":"https:\/\/nginx.org\/en\/docs\/http\/ngx_http_fastcgi_module.html?utm_source=openai","title":"M\u00f3dulo ngx_http_fastcgi_module"},"S6":{"id":"S6","url":"https:\/\/www.kernel.org\/doc\/html\/v6.12\/filesystems\/proc.html?utm_source=openai","title":"O sistema de ficheiros \/proc \u2014 Documenta\u00e7\u00e3o do kernel do Linux"}},"_wh_make_usage":{"research":{"input_tokens":13377,"output_tokens":2589,"response_id":"resp_0de9d77ca410f7ba016aeb3449d7d087d2abbb39037cde8c14","model":"gpt-6.1-terra","search_calls":1},"plan_65cd50b20cbd876bb4fd58c3bdf44934":{"input_tokens":5676,"output_tokens":1152,"response_id":"resp_07070f8cb815141f016aeb3472b32c87d28f5447aaaebcbf59","model":"gpt-6.1-terra","search_calls":0},"part1_d361ac731b1801282b1dfad518a9980e":{"input_tokens":7993,"output_tokens":1789,"response_id":"resp_05469b769500b5be016aeb3483661087d28a9e433d376e7e29","model":"gpt-6.1-terra","search_calls":0},"part2_eda54726519da48991078aa1ed3291f2":{"input_tokens":8043,"output_tokens":2180,"response_id":"resp_0f48008f6008c31e016aeb349bdbb487d28f13358a9673f916","model":"gpt-6.1-terra","search_calls":0},"part3_77c2cc14796e37c2587bca66f0322bfc":{"input_tokens":8071,"output_tokens":1773,"response_id":"resp_09acc0aa3cebdcc4016aeb34be1b8887d288ea1ddad2a21c12","model":"gpt-6.1-terra","search_calls":0},"package_1aaa04ff0a7f94917f643c91e840ffc1":{"input_tokens":15319,"output_tokens":1323,"response_id":"resp_0c56e246dfc75fe1016aeb34d8dda487d2a1187e71bf7bfad0","model":"gpt-6.1-terra","search_calls":0},"review_9466d09b5abf3fe9c0486a57e66f25b6":{"input_tokens":33769,"output_tokens":733,"response_id":"resp_08ce48482b4919d7016aeb34ee0e1087d28a7b5c4d77efb3a4","model":"gpt-6.1-sol","search_calls":2},"image_hero":{"input_tokens":171,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0},"image_detail1":{"input_tokens":159,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0},"image_detail2":{"input_tokens":162,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0}},"_wh_make_last_error":"","_wh_make_write_intent":{"before":{"content_md5":"b6bec4627bf71ed7873cb4f75841c32d","title":"Planeamento da capacidade do PHP-FPM: calcular o n\u00famero de workers, a mem\u00f3ria RAM e o n\u00famero de pedidos simult\u00e2neos","slug":"php-fpm-planeamento-de-capacidade-workers-ram-pedidos","excerpt":"Quantos workers do PHP-FPM cabem na RAM e quantos s\u00e3o necess\u00e1rios para o tr\u00e1fego real? O artigo explica a medi\u00e7\u00e3o do PSS, a ocupa\u00e7\u00e3o dos workers e os limites do par\u00e2metro pm.max_children.","status":"draft","featured_media":0},"expected":{"content_md5":"b99a6321bcea002fa2d3704eb8c99934","title":"Planeamento da capacidade do PHP-FPM: calcular o n\u00famero de workers, a mem\u00f3ria RAM e o n\u00famero de pedidos simult\u00e2neos","slug":"php-fpm-planeamento-de-capacidade-workers-ram-pedidos","excerpt":"Quantos workers do PHP-FPM cabem na RAM e quantos s\u00e3o necess\u00e1rios para o tr\u00e1fego real? O artigo explica a medi\u00e7\u00e3o do PSS, a ocupa\u00e7\u00e3o dos workers e os limites do par\u00e2metro pm.max_children.","status":"draft","featured_media":22160},"at":"2026-11-04T13:38:22+00:00"},"_wh_make_design_version":"2.1.19","rank_math_title":"PHP-FPM Kapazit\u00e4tsplanung: Worker und RAM berechnen","_wh_make_doc":{"title":"Planeamento da capacidade do PHP-FPM: calcular o n\u00famero de workers, a mem\u00f3ria RAM e o n\u00famero de pedidos simult\u00e2neos","slug":"php-fpm-planeamento-de-capacidade-workers-ram-pedidos","excerpt":"Quantos workers do PHP-FPM cabem na RAM e quantos s\u00e3o necess\u00e1rios para o tr\u00e1fego real? O artigo explica a medi\u00e7\u00e3o do PSS, a ocupa\u00e7\u00e3o dos workers e os limites do par\u00e2metro pm.max_children.","seo":{"title":"Planeamento da capacidade do PHP-FPM: calcular o n\u00famero de workers e a mem\u00f3ria RAM","description":"Planear os workers do PHP-FPM com base no or\u00e7amento de RAM e na ocupa\u00e7\u00e3o das solicita\u00e7\u00f5es: eis como limitar e monitorizar de forma eficaz o par\u00e2metro pm.max_children.","focus_keyword":"PHP-FPM Kapazit\u00e4tsplanung"},"lead":[{"kind":"text","text":"F\u00fcr eine sinnvolle PHP-FPM Kapazit\u00e4tsplanung berechnest du zun\u00e4chst, wie viele Worker in das verf\u00fcgbare RAM-Budget passen. Davon getrennt sch\u00e4tzt du, wie viele Worker der tats\u00e4chlich beim Pool eintreffende Verkehr ben\u00f6tigt. ","ref":""},{"kind":"strong","text":"pm.max_children","ref":""},{"kind":"text","text":" begrenzt die gleichzeitig verf\u00fcgbaren Worker pro Pool, ist aber weder eine Besucherzahl noch ein direkter Durchsatzwert. Auch CPU, Datenbank und Lastspitzen bestimmen, welche Einstellung im Betrieb tragf\u00e4hig ist.","ref":""},{"kind":"citation","text":"","ref":"S1"}],"images":{"hero":{"prompt":"Sachliche redaktionelle Illustration zur Kapazit\u00e4tsplanung von PHP-FPM: Ein l\u00e4nglicher, offener Beh\u00e4lter aus matter grauer Pappe steht seitlich im Bild. Darin liegen mehrere gleichartige kleine Holzquader als Sinnbild begrenzt verf\u00fcgbarer Worker; einige schmale Anfragestreifen warten au\u00dferhalb des Beh\u00e4lters. Die r\u00e4umliche Grenze ist klar erkennbar, ohne eine konkrete Prozesszahl oder Messung zu behaupten. Augenh\u00f6he, asymmetrischer Anschnitt, ruhige erdige Farben und weiche Schatten. Keine Menschen, Schrift, Zahlen, Logos oder Wasserzeichen.","alt":"KI-generierte Illustration eines begrenzten Beh\u00e4lters mit Worker-Quadern und davor wartenden Anfragestreifen.","caption":"KI-generierte Illustration: Die Pool-Grenze begrenzt parallele Worker; weitere Anfragen k\u00f6nnen warten.","filename_base":"php-fpm-worker-kapazitaet-illustration","section_id":"","after_block":0},"detail1":{"prompt":"Fotografisches KI-generiertes Symbolbild zum verf\u00fcgbaren Arbeitsspeicher: Ein einzelnes ausgebautes RAM-Modul liegt diagonal auf einer leicht gebrauchten antistatischen Werkstattmatte. Enger seitlicher Detailausschnitt mit erkennbaren Speicherchips und Kontakten, ohne ein bestimmtes Produkt zu behaupten. Vorhandenes Fensterlicht, nat\u00fcrliche Materialien, dezente Alltagsspuren und sachliche Farben; keine inszenierte Produktwerbung. Keine Menschen, Bildschirme, lesbaren Beschriftungen, Zahlen, Logos oder Wasserzeichen.","alt":"KI-generiertes Symbolbild eines ausgebauten RAM-Moduls auf einer antistatischen Werkstattmatte.","caption":"KI-generiertes Symbolbild: Das verf\u00fcgbare RAM setzt dem Budget f\u00fcr PHP-FPM-Pools eine Grenze.","filename_base":"php-fpm-ram-budget-speichermodul","section_id":"ram-budget","after_block":1},"detail2":{"prompt":"Sachliche redaktionelle Illustration zur Auswertung des FPM-Status: Auf einer hellen matten Fl\u00e4che liegen zwei schmale, unterschiedlich lange Papierstreifen nebeneinander. Einer zeigt eine kleine aktuelle Ansammlung von Punkten, der andere zus\u00e4tzlich eine weiter zur\u00fcckliegende gr\u00f6\u00dfere Ansammlung als Symbol f\u00fcr einen fr\u00fcheren H\u00f6chststand. Schr\u00e4ge Draufsicht mit viel freiem Raum, reduzierte Formen in ged\u00e4mpftem Ocker und Dunkelgrau. Keine exakten Messwerte oder Benutzeroberfl\u00e4che darstellen; keine Menschen, Schrift, Zahlen, Logos oder Wasserzeichen.","alt":"KI-generierte Illustration zweier Papierstreifen mit aktuellen und fr\u00fcheren Punktansammlungen.","caption":"KI-generierte Illustration: Aktuelle Statuswerte und fr\u00fchere H\u00f6chstst\u00e4nde ben\u00f6tigen einen zeitlichen Bezug.","filename_base":"php-fpm-status-zeitlicher-bezug","section_id":"status-und-messung","after_block":3}},"chart":null,"social":{"facebook":"Wie viele PHP-FPM Worker passen ins RAM \u2013 und wie viele ben\u00f6tigt dein tats\u00e4chlicher Verkehr? Wir erkl\u00e4ren die beiden Rechnungen und ihre Grenzen.","instagram":"RAM-Budget und Request-Belegung getrennt betrachten: So wird aus pm.max_children eine begr\u00fcndete Betriebsgrenze statt eines geratenen Werts.","tiktok":"Mehr PHP-FPM Worker sind nicht automatisch schneller. Entscheidend sind RAM-Budget, Belegungszeit und die Kapazit\u00e4t des Backends.","youtube":"PHP-FPM Kapazit\u00e4t planen: Worker-Speicher mit PSS einsch\u00e4tzen, Anfragebelegung berechnen und pm.max_children \u00fcberwachen.","threads":"Ein PHP-FPM Worker ist weder ein Besucher noch ein Request pro Sekunde. F\u00fcr die Planung z\u00e4hlen RAM-Budget und tats\u00e4chliche Belegungszeit getrennt.","x":"PHP-FPM planen: Wie viele Worker passen ins RAM, und wie viele braucht der Pool bei tats\u00e4chlicher Last? Die beiden Rechnungen liefern Anhaltspunkte \u2013 keine Leistungsgarantie."},"avatar_script":"Wie viele PHP-FPM Worker du einstellen solltest, h\u00e4ngt von zwei getrennten Rechnungen ab. Zuerst bestimmst du das verf\u00fcgbare RAM-Budget f\u00fcr den Pool. Daf\u00fcr ziehst du andere Dienste, weitere Pools und eine Reserve vom wirksamen Speicherlimit ab. Den Worker-Verbrauch sch\u00e4tzt du anhand mehrerer PSS-Beobachtungen unter unterschiedlichen Lastbedingungen. Danach betrachtest du den tats\u00e4chlichen PHP-Verkehr: Requests pro Sekunde multipliziert mit der mittleren Worker-Belegungszeit ergeben eine erste N\u00e4herung f\u00fcr die mittlere Auslastung. F\u00fcr Spitzen brauchst du zus\u00e4tzlichen Spielraum. Der rechnerische RAM-Wert ist keine Garantie: Auch CPU, Datenbank und externe Dienste k\u00f6nnen begrenzen. \u00dcberwache deshalb Warteschlange, Worker-Auslastung, Speicher und Antwortzeiten gemeinsam \u00fcber die Zeit.","version_note":"Recherchestand: 4. November 2026. Verf\u00fcgbarkeit von Status-Listener, Prozessdaten und Pool-Einstellungen f\u00fcr die eingesetzte PHP- und Linux-Version sowie die Hosting-Umgebung pr\u00fcfen.","sections":[{"id":"worker-und-anfragen","heading":"Was ein PHP-FPM Worker begrenzt","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"PHP-FPM verwaltet PHP-Prozesse in Pools. Ein ","ref":""},{"kind":"strong","text":"Worker","ref":""},{"kind":"text","text":" bearbeitet jeweils eine Anfrage; die Pool-Einstellung ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":" begrenzt die Zahl der gleichzeitig verf\u00fcgbaren Worker und damit die gleichzeitig bearbeiteten PHP-Anfragen dieses Pools. Bei mehreren Pools gilt die Grenze jeweils f\u00fcr den betreffenden Pool, nicht automatisch f\u00fcr den gesamten Server.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Diese Zahl ist weder die Zahl angemeldeter Besucher noch ein direkter Wert f\u00fcr Requests pro Sekunde. Ein Besucher kann mehrere Anfragen ausl\u00f6sen, w\u00e4hrend ein angemeldeter Nutzer zwischen zwei Aktionen keinen Worker belegt. Umgekehrt kann ein einzelner langsamer Request einen Worker l\u00e4nger binden als mehrere kurze Anfragen hintereinander.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch nicht jeder Seitenaufruf erreicht PHP-FPM. Liefert der Webserver eine statische Datei direkt aus oder beantwortet ein vorgeschalteter Cache eine Anfrage vollst\u00e4ndig, ist daf\u00fcr je nach Architektur kein PHP-Worker n\u00f6tig. Cache-Misses, eingeloggte Nutzer und Verwaltungsseiten k\u00f6nnen dagegen weiterhin PHP-Anfragen erzeugen und kurzfristig die Belegung erh\u00f6hen.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die Kapazit\u00e4tsplanung sind deshalb zwei getrennte Fragen entscheidend: Wie viele Worker passen mit Reserve in das verf\u00fcgbare RAM? Und wie viele Worker braucht der tats\u00e4chlich beim Pool eintreffende Verkehr, damit Anfragen nicht \u00fcberm\u00e4\u00dfig lange warten? Ein hoher Wert f\u00fcr ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":" beantwortet keine dieser Fragen allein.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Selbst wenn ausreichend Speicher vorhanden ist, k\u00f6nnen CPU, Datenbank oder externe Dienste die praktische Kapazit\u00e4t begrenzen. Zus\u00e4tzliche Worker erm\u00f6glichen dann zwar mehr parallele PHP-Arbeit, k\u00f6nnen aber gleichzeitig den Druck auf einen bereits langsamen Dienst erh\u00f6hen. Der Pool-Wert ist daher eine Betriebsgrenze und keine Leistungszusage.","ref":""}]}]},{"id":"prozessmanager","heading":"Prozessmanager und Warteschlange verstehen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Der ","ref":""},{"kind":"strong","text":"Prozessmanager","ref":""},{"kind":"text","text":" legt fest, wann PHP-FPM Worker bereitstellt. Bei ","ref":""},{"kind":"code","text":"static","ref":""},{"kind":"text","text":" entspricht die vorgehaltene Prozesszahl dem Wert von ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":". Das macht die Zahl der Prozesse gut planbar, bindet aber auch bei geringer Auslastung Ressourcen. Die Obergrenze selbst muss weiterhin zum verf\u00fcgbaren Speicher passen.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei ","ref":""},{"kind":"code","text":"dynamic","ref":""},{"kind":"text","text":" passt FPM die Prozesszahl an: Startzahl sowie minimale und maximale Zahl freier Worker werden zus\u00e4tzlich eingestellt. Bei ","ref":""},{"kind":"code","text":"ondemand","ref":""},{"kind":"text","text":" entstehen Worker erst bei Bedarf und werden nach einer konfigurierten Leerlaufzeit beendet. Das kann bei selten genutzten Pools Ressourcen sparen; bei einer pl\u00f6tzlichen Lastspitze muss jedoch zun\u00e4chst neue Prozesskapazit\u00e4t entstehen.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"table","caption":"Prozessmanager im Vergleich","headers":["Modus","Wichtige Einstellungen","Einsatz und Abw\u00e4gung"],"rows":[["static","pm.max_children","Feste Worker-Zahl; gut planbar, aber Ressourcenbindung im Leerlauf."],["dynamic","pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers","Anpassung an wechselnden Bedarf; freie und startende Worker m\u00fcssen abgestimmt werden."],["ondemand","pm.max_children, pm.process_idle_timeout","Worker bei Bedarf; spart bei selten genutzten Pools Ressourcen, Prozessstarts sind bei Lastanstieg zu ber\u00fccksichtigen."]],"source_ids":["S1"]},{"type":"paragraph","runs":[{"kind":"text","text":"Sind alle Worker besch\u00e4ftigt, k\u00f6nnen weitere Anfragen in der ","ref":""},{"kind":"strong","text":"Listener-Warteschlange","ref":""},{"kind":"text","text":" auf einen freien Prozess warten. Der FPM-Status zeigt unter anderem die aktuelle und die maximale Warteschlange. Ein einzelner hoher H\u00f6chstwert beschreibt allerdings nicht, ob der Pool gerade \u00fcberlastet ist; daf\u00fcr braucht er einen zeitlichen Bezug.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Eine gr\u00f6\u00dfere Warteschlange schafft keine zus\u00e4tzlichen Worker und beschleunigt keine langsame Datenbank. Sie kann Anfragen vor\u00fcbergehend aufnehmen, verlagert die Wartezeit aber lediglich vor die PHP-Bearbeitung. F\u00fcr die Entscheidung \u00fcber den Prozessmanager sind daher sowohl der typische Lastverlauf als auch die Folgen kurzer Spitzen wichtig.","ref":""}]}]},{"id":"speichergrundlagen","heading":"Worker-Speicher richtig einordnen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Der Speicherbedarf eines Workers l\u00e4sst sich nicht zuverl\u00e4ssig allein aus einer PHP-Konfigurationsgrenze ableiten. F\u00fcr die Planung sind Prozessdaten unter passenden Lastbedingungen hilfreicher. Dabei macht es einen Unterschied, ob du den residenten Speicher eines einzelnen Prozesses ansiehst oder den Verbrauch einer ganzen Gruppe von PHP-FPM Workern einsch\u00e4tzen willst.","ref":""}]},{"type":"paragraph","runs":[{"kind":"strong","text":"RSS","ref":""},{"kind":"text","text":" beschreibt residenten Speicher eines Prozesses. Nutzen mehrere Worker dieselben Speicherseiten, k\u00f6nnen diese in ihrem jeweiligen RSS enthalten sein. Addierst du die RSS-Werte aller Worker, erscheinen gemeinsam genutzte Seiten dadurch unter Umst\u00e4nden mehrfach; die Summe ist deshalb keine saubere Aussage \u00fcber den gemeinsam belegten physischen Speicher.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"strong","text":"PSS","ref":""},{"kind":"text","text":" verteilt gemeinsam genutzte Seiten anteilig auf die beteiligten Prozesse. Die Summe der PSS-Werte einer Prozessgruppe ist f\u00fcr deren Speicherplanung daher oft hilfreicher als die Summe der RSS-Werte. Sie bleibt dennoch eine Momentaufnahme: \u00c4ndert sich die Zahl der Prozesse, die Seiten teilen, \u00e4ndern sich auch die jeweiligen Anteile.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Betrachte mehrere Worker bei typischen und auch bei speicherintensiven Requests. Ein frisch gestarteter Prozess oder ein einzelner Durchschnitt kann den sp\u00e4teren Bedarf untersch\u00e4tzen. Die gesamte Pool-PSS bei verschiedenen Worker-Zahlen und Lastzust\u00e4nden hilft, einen konservativen N\u00e4herungswert abzuleiten; eine Hochrechnung auf mehr Worker bleibt wegen ver\u00e4nderlicher gemeinsamer und privater Anteile unsicher.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Das PHP-","ref":""},{"kind":"code","text":"memory_limit","ref":""},{"kind":"text","text":" ist keine zuverl\u00e4ssige Angabe f\u00fcr den gesamten Betriebssystem-Speicher eines FPM-Prozesses und ersetzt diese Beobachtung nicht. Gemeinsam genutzten Speicher, etwa durch OPcache, solltest du nicht pauschal ein zweites Mal vom Budget abziehen, wenn er bereits anteilig in der verwendeten Pool-PSS enthalten ist. Andere Dienste und eine Reserve m\u00fcssen trotzdem ber\u00fccksichtigt werden.","ref":""}]}]},{"id":"ram-budget","heading":"RAM-Budget und Worker-Zahl berechnen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ausgangspunkt ist das tats\u00e4chlich verf\u00fcgbare RAM: auf einem Host der f\u00fcr die Dienste nutzbare Speicher, im Container das wirksame Speicherlimit. Ziehe davon den Bedarf des Betriebssystems, des Webservers, einer gegebenenfalls lokalen Datenbank und weiterer Dienste ab. Andere FPM-Pools und eine Reserve f\u00fcr schwankenden Verbrauch geh\u00f6ren ebenfalls in die Rechnung.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Der verbleibende Anteil ist das ","ref":""},{"kind":"strong","text":"Pool-Budget","ref":""},{"kind":"text","text":". F\u00fcr den Worker-Sch\u00e4tzwert beobachtest du die PSS-Summe der Pool-Worker bei verschiedenen Prozesszahlen und Lastzust\u00e4nden. Ber\u00fccksichtige typische Anfragen ebenso wie speicherintensive Endpunkte. Teile die jeweilige Summe durch die betrachtete Worker-Zahl und leite aus mehreren Beobachtungen einen vorsichtigen N\u00e4herungswert ab.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die folgende Rechnung ist ein illustratives Rechenbeispiel, keine Messung. Die angenommenen Werte dienen nur dazu, den Rechenweg zu zeigen; sie sind keine Empfehlung f\u00fcr eine bestimmte Anwendung. Das Ergebnis wird auf eine ganze Worker-Zahl abgerundet.","ref":""}]},{"type":"table","caption":"Illustrative RAM-Planung f\u00fcr einen einzelnen Pool","headers":["Rechenschritt","Annahme","Einordnung"],"rows":[["Wirksames RAM-Limit","4.096 MiB","Host- oder Containergrenze im Beispiel"],["Andere Dienste, Pools und Reserve","2.048 MiB","Zusammen angenommener Abzug"],["Budget f\u00fcr den betrachteten Pool","2.048 MiB","4.096 minus 2.048 MiB"],["PSS-N\u00e4herungswert je Worker","80 MiB","Angenommener konservativer Planungswert"],["Rechnerische RAM-Grenze","25 Worker","2.048 geteilt durch 80, abgerundet"]],"source_ids":["S3","S6"]},{"type":"paragraph","runs":[{"kind":"text","text":"Die 25 Worker sind keine garantierte sichere Einstellung. PSS verteilt gemeinsam genutzte Seiten anteilig und ver\u00e4ndert sich mit der Zahl der Prozesse, die diese Seiten teilen. Auch ein anderer Request-Mix kann den privaten Speicherbedarf verschieben; die Hochrechnung sollte daher gegen den beobachteten Gesamtverbrauch und das vorhandene Limit gepr\u00fcft werden.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ist gemeinsam genutzter Speicher wie OPcache bereits anteilig in der verwendeten PSS-Summe enthalten, ziehst du ihn nicht nochmals pauschal als vollst\u00e4ndigen Zusatzposten ab. Plane dennoch Reserve f\u00fcr Speicheranteile ein, die deine Betrachtung nicht erfasst. Gerade bei einem Containerlimit z\u00e4hlt letztlich der Verbrauch aller Prozesse innerhalb der Grenze, nicht nur die gesch\u00e4tzte Worker-Summe.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein frisch gestarteter Worker allein ist als Grundlage wenig aussagekr\u00e4ftig: Er hat m\u00f6glicherweise noch keinen anspruchsvollen Request bearbeitet. Vergleiche deshalb mehrere Zeitpunkte und halte fest, welche Endpunkte und wie viele Worker jeweils beteiligt waren. So l\u00e4sst sich erkennen, ob der gew\u00e4hlte N\u00e4herungswert auch bei ung\u00fcnstigeren, aber realistischen Betriebszust\u00e4nden tr\u00e4gt.","ref":""}]}]},{"id":"verkehr-und-belegung","heading":"Ben\u00f6tigte Worker aus Anfragen absch\u00e4tzen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Die RAM-Rechnung beschreibt, wie viele Worker voraussichtlich Platz finden. F\u00fcr den Bedarf z\u00e4hlt dagegen, wie viele PHP-Anfragen tats\u00e4chlich im betrachteten Pool eintreffen und wie lange sie einen Worker binden. Als erste N\u00e4herung gilt: mittlere gleichzeitig belegte Worker gleich PHP-Requests pro Sekunde multipliziert mit der mittleren Worker-Belegungszeit in Sekunden.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Illustratives Rechenbeispiel, keine Messung: Bei angenommenen 20 PHP-Requests pro Sekunde und einer mittleren Belegungszeit von 0,25 Sekunden sind im Mittel f\u00fcnf Worker besch\u00e4ftigt. Das ist ein Durchschnitt \u00fcber den betrachteten Zeitraum. Er sagt weder, dass immer genau f\u00fcnf Prozesse arbeiten, noch, dass f\u00fcnf als Pool-Limit f\u00fcr kurze Spitzen ausreichen.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die Anfragezahl verwendest du nicht ungepr\u00fcft s\u00e4mtliche Seitenaufrufe. Wenn ein Cache viele Antworten ausliefert, ohne PHP aufzurufen, belasten diese Treffer den Pool nicht. Umgekehrt k\u00f6nnen Cache-Misses, eingeloggte Besucher und Verwaltungszugriffe zeitweise mehr PHP-Arbeit ausl\u00f6sen, als ein \u00fcber den ganzen Tag gebildeter Durchschnitt vermuten l\u00e4sst.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die ","ref":""},{"kind":"strong","text":"Worker-Belegungszeit","ref":""},{"kind":"text","text":" umfasst auch Wartezeiten innerhalb der Bearbeitung, etwa auf eine Datenbank oder einen externen Dienst. Sie ist nicht automatisch mit der im Browser sichtbaren Antwortzeit gleichzusetzen. Nach ","ref":""},{"kind":"code","text":"fastcgi_finish_request()","ref":""},{"kind":"text","text":" kann PHP die Antwort bereits an den Client abgeschlossen haben und dennoch weitere Arbeit im Worker ausf\u00fchren.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr akzeptable Wartezeiten brauchst du Spielraum \u00fcber der mittleren Belegung. Wie gro\u00df er sein muss, h\u00e4ngt unter anderem von Lastschwankungen, langsamen Endpunkten und dem gew\u00fcnschten Antwortzeitziel ab. Eine Multiplikation von Spitzen-Requests pro Sekunde mit einer hohen Latenz-Perzentile kann ein vorsichtiger Szenariocheck sein, ist aber keine pr\u00e4zise Warteschlangenprognose.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Betrachte deshalb mehrere Zeitr\u00e4ume getrennt: Eine kurze Aktionsspitze und ruhiger Nachtverkehr k\u00f6nnen denselben Tagesmittelwert ergeben wie ein gleichm\u00e4\u00dfigerer Betrieb, stellen aber unterschiedliche Anforderungen. Steigt die Belegungszeit durch ein langsames Backend, w\u00e4chst bei gleicher Ankunftsrate auch die mittlere Zahl gebundener Worker. Der Bedarf ist damit nicht allein eine Eigenschaft des Besucheraufkommens.","ref":""}]}]},{"id":"pool-konfiguration","heading":"Pool-Einstellungen aus der Planung ableiten","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Stelle nun die RAM-basierte Obergrenze dem gesch\u00e4tzten Bedarf einschlie\u00dflich Spielraum gegen\u00fcber. Passt der Bedarf darunter, w\u00e4hle einen vorsichtigen Startwert f\u00fcr ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":", der das Budget nicht aussch\u00f6pfen muss. Im illustrativen Beispiel w\u00e4ren 25 die rechnerische RAM-Grenze, nicht automatisch die passende Einstellung; CPU und Backend k\u00f6nnen schon vorher begrenzen.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Liegt der gesch\u00e4tzte Bedarf \u00fcber der RAM-Grenze, l\u00f6st ein h\u00f6heres Limit den Widerspruch nicht: Es kann den Host oder Container unter Speicherdruck setzen. Umgekehrt kann ein sehr niedriges Limit Anfragen warten lassen. Verbessere in diesem Fall etwa die Ausf\u00fchrungszeit oder Cache-Nutzung und pr\u00fcfe, ob zus\u00e4tzliche Ressourcen oder eine Begrenzung der Eingangslast n\u00f6tig sind.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei ","ref":""},{"kind":"strong","text":"dynamic","ref":""},{"kind":"text","text":" legst du neben der Obergrenze die Startzahl sowie Mindest- und H\u00f6chstzahl freier Worker fest. Die Start- und Reservewerte sollten zur erwarteten Last passen und innerhalb der Obergrenze bleiben. Zu wenig vorgehaltene Kapazit\u00e4t kann bei pl\u00f6tzlicher Last zus\u00e4tzlichen Startbedarf bedeuten; dauerhaft viele freie Prozesse verbrauchen dagegen Ressourcen.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei ","ref":""},{"kind":"strong","text":"ondemand","ref":""},{"kind":"text","text":" entstehen Worker erst bei Bedarf; die Leerlaufzeit bis zu ihrer Beendigung wird gesondert eingestellt. Das kann f\u00fcr selten genutzte Pools sinnvoll sein, erfordert aber bei schnellen Lastanstiegen besondere Aufmerksamkeit. Auch hier begrenzt ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":" die Zahl der gleichzeitig verf\u00fcgbaren Worker des Pools.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Mehrere Websites auf demselben Host erhalten nicht unabh\u00e4ngig voneinander jeweils das gesamte freie RAM. Budgetiere ihre m\u00f6glichen Pool-Maxima zusammen mit den \u00fcbrigen Diensten und der Reserve. Eine gegebenenfalls konfigurierte globale FPM-Prozessgrenze kann zus\u00e4tzlich greifen, ersetzt aber weder die einzelnen Pool-Budgets noch die Pr\u00fcfung von CPU und Datenbankkapazit\u00e4t.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Pr\u00fcfe nach \u00c4nderungen die tats\u00e4chliche Auslastung und Wartezeiten \u00fcber geeignete Zeitr\u00e4ume, statt den Startwert als endg\u00fcltig anzusehen. Bei Managed Hosting sind Prozessdaten oder Pool-Einstellungen m\u00f6glicherweise nicht direkt zug\u00e4nglich; nutze dann die Metriken und freigegebenen Optionen des Anbieters. Welche Einstellungen verf\u00fcgbar sind, h\u00e4ngt au\u00dferdem von PHP-Version und Betriebsumgebung ab.","ref":""}]}]},{"id":"status-und-messung","heading":"FPM-Status und Speicher beobachten","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Die FPM-Statusseite zeigt, ob die geplanten Worker unter realer Last ausreichen. ","ref":""},{"kind":"strong","text":"Sch\u00fctze den Statusendpunkt","ref":""},{"kind":"text","text":" vor \u00f6ffentlichem Zugriff: Er kann sensible Angaben \u00fcber Anfragen und Ressourcen preisgeben. Ein separat konfigurierter Status-Listener kann auch bei einem ausgelasteten Hauptpool erreichbar bleiben; pr\u00fcfe seine Verf\u00fcgbarkeit und Einrichtung f\u00fcr deine PHP-Version und Webserver-Konfiguration.","ref":""},{"kind":"citation","text":"","ref":"S1"},{"kind":"citation","text":"","ref":"S2"}]},{"type":"table","caption":"FPM-Statuswerte im zeitlichen Zusammenhang auswerten","headers":["Statuswert","Einordnung","Anschlussfrage"],"rows":[["active processes \/ idle processes","Aktuell besch\u00e4ftigte und freie Worker","Bleiben bei Lastspitzen freie Worker verf\u00fcgbar?"],["listen queue \/ max listen queue","Aktuelle und bisher maximale Warteschlangenl\u00e4nge","W\u00e4chst die Warteschlange w\u00e4hrend langsamer Antworten?"],["max children reached","Z\u00e4hler f\u00fcr das Erreichen der Worker-Grenze bei dynamic oder ondemand","Steigt der Z\u00e4hler im betrachteten Zeitraum?"],["slow requests","Z\u00e4hler langsamer Anfragen","F\u00e4llt sein Anstieg mit l\u00e4ngeren Antwortzeiten zusammen?"]],"source_ids":["S2"]},{"type":"paragraph","runs":[{"kind":"text","text":"Betrachte die Werte als ","ref":""},{"kind":"strong","text":"Zeitreihen","ref":""},{"kind":"text","text":" zusammen mit Anfragevolumen und Antwortzeiten. Ein alter H\u00f6chstwert der Warteschlange beweist keine aktuelle \u00dcberlastung; ebenso ist bei Z\u00e4hlern ihr Anstieg seit der letzten Beobachtung aussagekr\u00e4ftiger als der blo\u00dfe Gesamtwert. Ber\u00fccksichtige dabei den Poolstart beziehungsweise Neustarts, durch die sich der Bezugszeitraum \u00e4ndert.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr einen bekannten FPM-Worker kannst du auf einem Linux-System mit verf\u00fcgbarer proc-Schnittstelle aggregierte Speicherwerte lesend abrufen. Ersetze ","ref":""},{"kind":"code","text":"PID","ref":""},{"kind":"text","text":" durch die tats\u00e4chliche Prozess-ID; du ben\u00f6tigst die entsprechenden Zugriffsrechte. Wiederhole die Beobachtung f\u00fcr mehrere Worker und Lastzust\u00e4nde, statt aus einem einzelnen Prozess eine dauerhafte Poolgr\u00f6\u00dfe abzuleiten.","ref":""},{"kind":"citation","text":"","ref":"S6"}]},{"type":"code","language":"bash","code":"cat \/proc\/PID\/smaps_rollup","source_ids":["S6"]}]},{"id":"engpaesse-diagnostizieren","heading":"Langsame Requests und Warteschlangen untersuchen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ein Shop kann viele aktive Worker anzeigen, obwohl nicht die PHP-Ausf\u00fchrung selbst der urspr\u00fcngliche Engpass ist. Warten Anfragen auf langsame Datenbankabfragen, bleiben die Worker w\u00e4hrenddessen gebunden. Treffen weitere Anfragen ein, kann die Listener-Warteschlange wachsen und die Antwortzeit steigen, selbst wenn die CPU noch Reserven zeigt.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Eine h\u00f6here Worker-Grenze l\u00e4sst in dieser Situation m\u00f6glicherweise mehr Anfragen gleichzeitig zur Datenbank gelangen. Das kann den ","ref":""},{"kind":"strong","text":"Backend-Druck","ref":""},{"kind":"text","text":" erh\u00f6hen und Wartezeiten weiter verl\u00e4ngern. Vergleiche deshalb den zeitlichen Verlauf von FPM-Auslastung und Warteschlange mit Datenbanklast, langsamen Abfragen und externen Dienstaufrufen, bevor du die Grenze erh\u00f6hst.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Das FPM-Slowlog hilft, lange PHP-Aufrufe einzugrenzen: F\u00fcr Anfragen \u00fcber einer konfigurierten Schwelle kann FPM einen Backtrace protokollieren. Dieser zeigt einen Ausf\u00fchrungspunkt und ist kein vollst\u00e4ndiges Profil der gesamten Anfrage. Wiederkehrende Stellen lassen sich mit Anfragedauer und Backend-Metriken abgleichen; die ","ref":""},{"kind":"internal_link","text":"Anleitung zum Auswerten des PHP-FPM Slowlogs","ref":"I3"},{"kind":"text","text":" erl\u00e4utert die weitere Analyse.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch ein Timeout ist von der eigentlichen Kapazit\u00e4t zu trennen. Bei nginx bezeichnet ","ref":""},{"kind":"code","text":"fastcgi_read_timeout","ref":""},{"kind":"text","text":" den zul\u00e4ssigen Abstand zwischen aufeinanderfolgenden Lesevorg\u00e4ngen vom FastCGI-Server, nicht pauschal die gesamte Requestdauer. Ein h\u00f6herer Wert kann l\u00e4ngeres Warten zulassen, schafft aber weder zus\u00e4tzliche Worker noch beschleunigt er die Datenbank.","ref":""},{"kind":"citation","text":"","ref":"S5"}]}]},{"id":"kapazitaet-entscheiden","heading":"Kapazit\u00e4tsgrenzen und n\u00e4chste Schritte","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Reicht das RAM-Budget nicht f\u00fcr den gesch\u00e4tzten Bedarf, l\u00f6st eine h\u00f6here Einstellung f\u00fcr ","ref":""},{"kind":"code","text":"pm.max_children","ref":""},{"kind":"text","text":" den Zielkonflikt nicht: Zus\u00e4tzliche Prozesse ben\u00f6tigen ebenfalls Speicher. Pr\u00fcfe stattdessen, ob sich die Zahl der PHP-Anfragen oder die Dauer ihrer Worker-Belegung senken l\u00e4sst. Welche Ma\u00dfnahme sinnvoll ist, h\u00e4ngt davon ab, wo die beobachtete Last entsteht.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein besser genutzter Cache kann wiederholte Aufrufe abfangen, w\u00e4hrend schnellere PHP-Ausf\u00fchrung und Datenbankzugriffe Worker fr\u00fcher freigeben. Geeignete Hintergrundarbeit l\u00e4sst sich aus dem unmittelbaren Anfragepfad auslagern; auch diese Arbeit ben\u00f6tigt allerdings eigene Ressourcen. Eine Lastbegrenzung sch\u00fctzt bei Spitzen das Backend, kann aber dazu f\u00fchren, dass Anfragen warten oder abgewiesen werden.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Zus\u00e4tzliches RAM kann eine h\u00f6here Worker-Zahl erm\u00f6glichen, wenn Speicher tats\u00e4chlich die ma\u00dfgebliche Grenze ist. Sind CPU, Datenbank oder ein externer Dienst bereits ausgelastet, muss deren Kapazit\u00e4t ebenfalls ber\u00fccksichtigt werden. Mehr Speicher allein garantiert deshalb weder k\u00fcrzere Antwortzeiten noch einen h\u00f6heren Durchsatz.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Steigt der Speicherbedarf einzelner Worker \u00fcber ihre Lebensdauer, kann ","ref":""},{"kind":"code","text":"pm.max_requests","ref":""},{"kind":"text","text":" deren regelm\u00e4\u00dfiges Ersetzen veranlassen. Das kann beim Umgang mit Speicherlecks in Drittbibliotheken helfen, behebt aber nicht deren Ursache. Beobachte nach einer \u00c4nderung weiterhin Pool-Speicher und Anfrageverhalten, statt den Neustartmechanismus als Ersatz f\u00fcr die Fehlersuche zu behandeln.","ref":""},{"kind":"citation","text":"","ref":"S1"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr eine breitere Architekturentscheidung bietet der ","ref":""},{"kind":"internal_link","text":"Vergleich von NGINX Unit und PHP-FPM","ref":"I1"},{"kind":"text","text":" Kontext; NGINX Unit ist archiviert und wird nicht mehr gepflegt. Unabh\u00e4ngig von der gew\u00e4hlten Architektur solltest du \u00c4nderungen anhand von ","ref":""},{"kind":"strong","text":"Zeitreihen","ref":""},{"kind":"text","text":" pr\u00fcfen: Vergleiche bei \u00e4hnlichem Anfragevolumen Warteschlange, Worker-Auslastung, Speicher und Antwortzeiten. So l\u00e4sst sich erkennen, ob eine Anpassung den Engpass tats\u00e4chlich entsch\u00e4rft oder lediglich verlagert hat.","ref":""},{"kind":"citation","text":"","ref":"S2"}]}]}]},"_wh_make_word_report":{"words":2340,"min":2000,"max":3000,"target":2500,"ok":true,"missing":0,"excess":0,"lead_words":59,"section_words":{"worker-und-anfragen":233,"prozessmanager":238,"speichergrundlagen":245,"ram-budget":338,"verkehr-und-belegung":290,"pool-konfiguration":291,"status-und-messung":212,"engpaesse-diagnostizieren":187,"kapazitaet-entscheiden":247}},"_wh_make_review":{"verdict":"pass","issues":[],"checked_source_ids":["S1","S2","S3","S4","S5","S6"],"summary":"Der Artikel ist fachlich plausibel und freigabef\u00e4hig. Prozessmanager, Pool-Grenzen, Status-Listener und Worker-Recycling sind durch S1 gest\u00fctzt. ([php.net](https:\/\/www.php.net\/install.fpm.configuration)) Die Statusauswertung ber\u00fccksichtigt aktuelle Werte, historische Maxima und Neustarts korrekt; S2 wurde wegen Abrufproblemen der Kurzadresse \u00fcber die entsprechende offizielle Handbuchseite gepr\u00fcft. ([php.net](https:\/\/www.php.net\/manual\/en\/fpm.status.php?utm_source=openai)) RSS, PSS und der lesende smaps_rollup-Aufruf stimmen mit der Kernel-Dokumentation \u00fcberein. ([docs.kernel.org](https:\/\/docs.kernel.org\/7.0\/filesystems\/proc.html)) Die weitere Worker-Belegung nach fastcgi_finish_request() und die nginx-Timeout-Semantik sind korrekt dargestellt; dabei entsprechen S4 und S5 den tats\u00e4chlichen Registry-URLs. ([php.net](https:\/\/www.php.net\/manual\/de\/install.fpm.php)) Beide Rechenbeispiele sind rechnerisch richtig und ausdr\u00fccklich keine Messungen. Bildplan und Bildunterschriften sind als KI-generierte Symbolik eingeordnet und enthalten keine irref\u00fchrende technische Topologie. Ein Chart ist nicht vorhanden. Der Archivierungsstatus von NGINX Unit wurde zus\u00e4tzlich anhand offizieller Projektinformationen best\u00e4tigt. ([unit.nginx.org](https:\/\/unit.nginx.org\/?utm_source=openai))"},"_wh_make_review_doc_hash":"8610d9d0213c9ae5260bfdefd05ca6c189e5279aa668ea3306ad183c3c5c8732","_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,"inline_featured_image":null,"_yoast_wpseo_linkdex":null,"_eael_widget_elements":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_trp_translated_slug_en_us":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_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_wh_make_writer_raw":null,"_wh_make_design_backup_204":null,"_wp_desired_post_slug":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":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":"91","_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,"_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-FPM Kapazit\u00e4tsplanung","rank_math_og_content_image":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":"22160","_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":"PHP-FPM Worker anhand von RAM-Budget und Request-Belegung planen: So l\u00e4sst sich pm.max_children sinnvoll eingrenzen und \u00fcberwachen.","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/22158","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=22158"}],"version-history":[{"count":2,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/22158\/revisions"}],"predecessor-version":[{"id":22163,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/22158\/revisions\/22163"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media\/22160"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media?parent=22158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/categories?post=22158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/tags?post=22158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}