{"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-kapacitetsplanlaegning-worker-ram-anmodninger","status":"publish","type":"post","link":"https:\/\/webhosting.de\/da\/php-fpm-kapazitaetsplanung-worker-ram-requests\/","title":{"rendered":"Kapacitetsplanl\u00e6gning for PHP-FPM: Beregning af worker-instanser, RAM og samtidige anmodninger"},"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\">For at kunne planl\u00e6gge PHP-FPM-kapaciteten p\u00e5 en fornuftig m\u00e5de skal du f\u00f8rst beregne, hvor mange workere der kan rummes inden for det tilg\u00e6ngelige RAM-budget. Derudover skal du vurdere, hvor mange workere den faktiske trafik, der ankommer til puljen, kr\u00e6ver. <strong style=\"font-weight:700;color:inherit\">pm.max_b\u00f8rn<\/strong> begr\u00e6nser antallet af arbejdere, der er tilg\u00e6ngelige samtidigt pr. pool, men er hverken et bes\u00f8gstal eller en direkte gennemstr\u00f8mningsv\u00e6rdi. Ogs\u00e5 CPU, database og belastningsspidser er afg\u00f8rende for, hvilken indstilling der er holdbar i drift. <\/p>\n<nav class=\"wh-toc\" aria-label=\"Indholdet af denne artikel\" 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\">G\u00e5 direkte til afsnittet<\/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\">Hvad der begr\u00e6nser en PHP-FPM-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=\"#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\">Forst\u00e5else af procesh\u00e5ndtering og k\u00f8er<\/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\">Korrekt klassificering af arbejdshukommelse<\/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\">Beregne RAM-budget og antal arbejdere<\/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\">Vurdere behovet for arbejdere ud fra anmodninger<\/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\">Udled poolindstillinger fra planl\u00e6gningen<\/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\">Overv\u00e5gning af FPM-status og lagerplads<\/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\">Unders\u00f8gelse af langsomme anmodninger og k\u00f8er<\/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\">Kapacitetsgr\u00e6nser og n\u00e6ste skridt<\/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\">Hvad der begr\u00e6nser en PHP-FPM-worker<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">PHP-FPM administrerer PHP-processer i puljer. En <strong style=\"font-weight:700;color:inherit\">Arbejder<\/strong> behandler \u00e9n foresp\u00f8rgsel ad gangen; pool-indstillingen <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> begr\u00e6nser antallet af arbejdsprocesser, der er tilg\u00e6ngelige p\u00e5 samme tid, og dermed antallet af PHP-foresp\u00f8rgsler, der behandles samtidigt i denne pulje. Hvis der er flere puljer, g\u00e6lder begr\u00e6nsningen for den p\u00e5g\u00e6ldende pulje og ikke automatisk for hele serveren. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Dette tal er hverken antallet af loggede bes\u00f8gende eller et direkte tal for anmodninger pr. sekund. En bes\u00f8gende kan udl\u00f8se flere anmodninger, mens en logget bruger ikke optager en worker mellem to handlinger. Omvendt kan en enkelt langsom anmodning optage en worker i l\u00e6ngere tid end flere korte anmodninger i tr\u00e6k.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Det er heller ikke alle sidevisninger, der n\u00e5r frem til PHP-FPM. Hvis webserveren leverer en statisk fil direkte, eller hvis en forudg\u00e5ende cache besvarer en foresp\u00f8rgsel fuldst\u00e6ndigt, er der \u2013 afh\u00e6ngigt af arkitekturen \u2013 ikke behov for en PHP-worker. Cache-fejl, indloggede brugere og administrationssider kan derimod stadig generere PHP-anmodninger og midlertidigt \u00f8ge belastningen.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">I forbindelse med kapacitetsplanl\u00e6gningen er der derfor to separate sp\u00f8rgsm\u00e5l, der er afg\u00f8rende: Hvor mange arbejdere kan der, med en reserve, v\u00e6re plads til i den tilg\u00e6ngelige RAM? Og hvor mange arbejdere kr\u00e6ver den trafik, der rent faktisk ankommer til puljen, for at foresp\u00f8rgslerne ikke skal vente un\u00f8digt l\u00e6nge? En h\u00f8j v\u00e6rdi for <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> besvarer ikke noget af disse sp\u00f8rgsm\u00e5l alene.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Selv hvis der er tilstr\u00e6kkelig lagerplads til r\u00e5dighed, kan CPU\u2019en, databasen eller eksterne tjenester begr\u00e6nse den faktiske kapacitet. Yderligere workere muligg\u00f8r ganske vist mere parallel PHP-behandling, men kan samtidig \u00f8ge presset p\u00e5 en tjeneste, der i forvejen er langsom. Pool-v\u00e6rdien er derfor en driftsgr\u00e6nse og ikke en ydelsesgaranti.<\/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\">Forst\u00e5else af procesh\u00e5ndtering og k\u00f8er<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Der <strong style=\"font-weight:700;color:inherit\">Procesleder<\/strong> fastl\u00e6gger, hvorn\u00e5r PHP-FPM stiller arbejdsprocesser til r\u00e5dighed. Ved <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> svarer det angivne procesnummer til v\u00e6rdien af <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>. Det g\u00f8r det nemt at planl\u00e6gge antallet af processer, men binder ogs\u00e5 ressourcer, selv n\u00e5r udnyttelsesgraden er lav. Selve den \u00f8vre gr\u00e6nse skal fortsat passe til den tilg\u00e6ngelige lagerplads. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Med <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> justerer FPM antallet af processer: Startantal samt minimalt og maksimalt antal ledige arbejdere indstilles desuden. Ved <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> Workere oprettes f\u00f8rst efter behov og afsluttes efter en konfigureret inaktivitetstid. Dette kan spare ressourcer i puljer, der sj\u00e6ldent bruges; ved en pludselig belastningsspids skal der dog f\u00f8rst oprettes ny proceskapacitet. <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Sammenligning af procesledere\" 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\">Sammenligning af procesledere<\/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\">Tilstand<\/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\">Vigtige indstillinger<\/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\">Indsats og afvejning<\/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\">statisk<\/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_b\u00f8rn<\/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\">Fast antal medarbejdere; let at planl\u00e6gge, men ressourcerne er bundet, n\u00e5r der ikke er arbejde.<\/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\">dynamisk<\/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\">Tilpasning til skiftende behov; ledige og nyansatte medarbejdere skal koordineres.<\/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\">ondemand<\/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 efter behov; sparer ressourcer i puljer, der sj\u00e6ldent bruges; processtarter skal tages i betragtning ved stigende belastning.<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Hvis alle arbejdere er besk\u00e6ftiget, kan yderligere anmodninger i <strong style=\"font-weight:700;color:inherit\">Lytterk\u00f8<\/strong> vente p\u00e5 en ledig proces. FPM-statusen viser blandt andet den aktuelle og den maksimale k\u00f8. En enkelt h\u00f8j maksimumsv\u00e6rdi siger dog ikke noget om, hvorvidt puljen lige nu er overbelastet; til det er det n\u00f8dvendigt med en tidsm\u00e6ssig sammenh\u00e6ng. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En st\u00f8rre k\u00f8 skaber ikke flere arbejdsprocesser og g\u00f8r ikke en langsom database hurtigere. Den kan midlertidigt opfange foresp\u00f8rgsler, men flytter blot ventetiden frem til f\u00f8r PHP-behandlingen. N\u00e5r man skal v\u00e6lge procesmanager, er det derfor vigtigt at tage h\u00f8jde for b\u00e5de det typiske belastningsforl\u00f8b og konsekvenserne af korte spidsbelastninger.<\/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\">Korrekt klassificering af arbejdshukommelse<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En workers hukommelsesbehov kan ikke p\u00e5lideligt udledes alene ud fra en PHP-konfigurationsgr\u00e6nse. Processdata under relevante belastningsforhold er mere nyttige til planl\u00e6gningen. Her g\u00f8r det en forskel, om du ser p\u00e5 den enkelte process\u2019 residente hukommelse, eller om du vil vurdere forbruget for en hel gruppe af PHP-FPM-workers.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><strong style=\"font-weight:700;color:inherit\">RSS<\/strong> beskriver en process' residente hukommelse. Hvis flere arbejdsprocesser bruger de samme hukommelsessider, kan disse indg\u00e5 i deres respektive RSS. Hvis man l\u00e6gger RSS-v\u00e6rdierne for alle arbejdsprocesser sammen, kan f\u00e6llesbrugte sider under visse omst\u00e6ndigheder optr\u00e6de flere gange; summen giver derfor ikke et pr\u00e6cist billede af den fysisk hukommelse, der deles. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><strong style=\"font-weight:700;color:inherit\">PSS<\/strong> fordeler f\u00e6lles sider proportionalt mellem de involverede processer. Summen af PSS-v\u00e6rdierne for en procesgruppe er derfor ofte mere nyttig til planl\u00e6gning af hukommelsen end summen af RSS-v\u00e6rdierne. Den er dog stadig kun et \u00f8jebliksbillede: Hvis antallet af processer, der deler siderne, \u00e6ndrer sig, \u00e6ndrer de respektive andele sig ogs\u00e5. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Se p\u00e5 flere arbejdere ved typiske og ogs\u00e5 ved hukommelseskr\u00e6vende anmodninger. En nystartet proces eller et enkelt gennemsnit kan undervurdere det senere behov. Den samlede pool-PSS ved forskellige antal arbejdsprocesser og belastningstilstande hj\u00e6lper med at udlede et konservativt sk\u00f8n; en ekstrapolering til flere arbejdsprocesser er usikker p\u00e5 grund af varierende f\u00e6lles og private andele.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">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> er ikke et p\u00e5lideligt tal for den samlede operativsystemhukommelse i en FPM-proces og erstatter ikke denne observation. F\u00e6lles hukommelse, f.eks. via OPcache, b\u00f8r du ikke generelt tr\u00e6kke fra budgettet en anden gang, hvis den allerede er medregnet forholdsm\u00e6ssigt i den anvendte pool-PSS. Andre tjenester og en reserve skal dog stadig tages i betragtning.<\/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\">Beregne RAM-budget og antal arbejdere<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Udgangspunktet er den faktisk tilg\u00e6ngelige RAM: p\u00e5 en host er det den hukommelse, der kan bruges til tjenesterne, i containeren er det den effektive hukommelsesgr\u00e6nse. Tr\u00e6k herfra behovet for operativsystemet, webserveren, en eventuel lokal database og andre tjenester. Andre FPM-puljer og en reserve til svingende forbrug skal ligeledes medregnes.<\/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=\"Et AI-genereret illustrativt billede af et udtaget RAM-modul p\u00e5 en antistatisk v\u00e6rkstedsm\u00e5tte.\" 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\">AI-genereret illustrativt billede: Den tilg\u00e6ngelige RAM s\u00e6tter en gr\u00e6nse for budgettet til PHP-FPM-puljer.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Den resterende andel er <strong style=\"font-weight:700;color:inherit\">Poolbudget<\/strong>. For at estimere antallet af arbejdere skal du observere PSS-summen for pool-arbejderne ved forskellige procesantal og belastningstilstande. Tag h\u00f8jde for b\u00e5de typiske foresp\u00f8rgsler og hukommelseskr\u00e6vende slutpunkter. Del den respektive sum med det betragtede antal arbejdere, og udled en forsigtig tiln\u00e6rmelsesv\u00e6rdi ud fra flere observationer. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">F\u00f8lgende beregning er et illustrativt eksempel og ikke en m\u00e5ling. De anvendte v\u00e6rdier tjener udelukkende til at vise beregningsmetoden; de udg\u00f8r ikke en anbefaling til en bestemt anvendelse. Resultatet afrundes til et helt antal arbejdere.<\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Eksempel p\u00e5 RAM-planl\u00e6gning for en enkelt 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\">Eksempel p\u00e5 RAM-planl\u00e6gning for en enkelt 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\">Regnetrin<\/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\">Accept<\/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\">Klassificering<\/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\">Effektiv RAM-gr\u00e6nse<\/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\">V\u00e6rts- eller containergr\u00e6nse i eksemplet<\/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\">Andre tjenester, puljer og reserve<\/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\">F\u00e6lles fradrag<\/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\">Budget for den p\u00e5g\u00e6ldende pulje<\/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 minus 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\">PSS-n\u00e6rv\u00e6rdi pr. medarbejder<\/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\">Antaget konservativt planl\u00e6gningsgrundlag<\/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\">Beregnet RAM-gr\u00e6nse<\/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 arbejdere<\/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 divideret med 80, afrundet<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">De 25 arbejdere er ikke en garanti for sikker tildeling. PSS fordeler de f\u00e6lles sider forholdsm\u00e6ssigt, og fordelingen \u00e6ndrer sig i takt med antallet af processer, der deler disse sider. Ogs\u00e5 en anden sammens\u00e6tning af anmodninger kan p\u00e5virke behovet for privat hukommelse; estimatet b\u00f8r derfor sammenlignes med det observerede samlede forbrug og den g\u00e6ldende gr\u00e6nse. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Hvis delt hukommelse som f.eks. OPcache allerede er medregnet forholdsm\u00e6ssigt i den anvendte PSS-sum, skal du ikke tr\u00e6kke den fra endnu en gang som en samlet ekstra post. Du b\u00f8r dog alligevel afs\u00e6tte en reserve til de hukommelsesandele, som din beregning ikke omfatter. Is\u00e6r ved en containergr\u00e6nse er det i sidste ende forbruget af alle processer inden for gr\u00e6nsen, der t\u00e6ller, ikke kun den ansl\u00e5ede sum af arbejdsprocesser.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En nyligt startet worker alene er ikke s\u00e6rlig sigende som grundlag: Den har muligvis endnu ikke behandlet en kr\u00e6vende anmodning. Sammenlign derfor flere tidspunkter, og noter, hvilke slutpunkter og hvor mange arbejdere der var involveret i hvert tilf\u00e6lde. P\u00e5 den m\u00e5de kan man se, om den valgte tiln\u00e6rmelsesv\u00e6rdi ogs\u00e5 holder stik under mindre gunstige, men realistiske driftsforhold.<\/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\">Vurdere behovet for arbejdere ud fra anmodninger<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">RAM-beregningen beskriver, hvor mange arbejdere der forventes at v\u00e6re plads til. Behovet afh\u00e6nger derimod af, hvor mange PHP-anmodninger der faktisk ankommer til den p\u00e5g\u00e6ldende pool, og hvor l\u00e6nge de optager en worker. Som en f\u00f8rste tiln\u00e6rmelse g\u00e6lder: det gennemsnitlige antal samtidigt optagede workers er lig med antallet af PHP-anmodninger pr. sekund ganget med den gennemsnitlige worker-optagelsestid i sekunder.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Illustrativt regneeksempel, ikke en m\u00e5ling: Hvis man antager 20 PHP-anmodninger pr. sekund og en gennemsnitlig behandlingstid p\u00e5 0,25 sekunder, er der i gennemsnit fem arbejdere i gang. Dette er et gennemsnit for den betragtede periode. Det betyder hverken, at der altid er pr\u00e6cis fem processer i gang, eller at fem er tilstr\u00e6kkeligt som poolgr\u00e6nse ved korte spidsbelastninger.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Du skal ikke medregne alle sidevisninger uden n\u00e6rmere kontrol i antallet af foresp\u00f8rgsler. Hvis en cache leverer mange svar uden at kalde PHP, belaster disse hits ikke puljen. Omvendt kan cache-misser, indloggede bes\u00f8gende og administrative adgangsforesp\u00f8rgsler til tider udl\u00f8se mere PHP-arbejde, end et gennemsnit over hele dagen antyder.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Die <strong style=\"font-weight:700;color:inherit\">Arbejdstid for arbejdstagere<\/strong> omfatter ogs\u00e5 ventetider under behandlingen, f.eks. p\u00e5 en database eller en ekstern tjeneste. Den kan ikke automatisk sidestilles med den responstid, der vises i browseren. If\u00f8lge <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> PHP kan allerede have afsluttet svaret til klienten og alligevel forts\u00e6tte med at udf\u00f8re arbejde i workeren. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">For at opn\u00e5 acceptable ventetider skal du have et spillerum ud over den gennemsnitlige udnyttelsesgrad. Hvor stort dette spillerum skal v\u00e6re, afh\u00e6nger blandt andet af belastningsudsving, langsomme slutpunkter og det \u00f8nskede svarstidsm\u00e5l. En multiplikation af spidsbelastningsanmodninger pr. sekund med en h\u00f8j latenstidsprocentil kan v\u00e6re en forsigtig scenarieanalyse, men er ikke en pr\u00e6cis k\u00f8prognose.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Man b\u00f8r derfor betragte flere tidsperioder hver for sig: En kort spidsbelastning og en rolig nattrafik kan give det samme daglige gennemsnit som en mere j\u00e6vn drift, men stiller forskellige krav. Hvis ventetiden stiger p\u00e5 grund af et langsomt backend, stiger det gennemsnitlige antal bundne medarbejdere ogs\u00e5 ved samme ankomstfrekvens. Behovet afh\u00e6nger s\u00e5ledes ikke udelukkende af bes\u00f8gsantallet.<\/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\">Udled poolindstillinger fra planl\u00e6gningen<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Sammenlign nu den RAM-baserede \u00f8vre gr\u00e6nse med det ansl\u00e5ede behov, inklusive et sikkerhedsmargen. Hvis behovet ligger under denne gr\u00e6nse, skal du v\u00e6lge en forsigtig startv\u00e6rdi for <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>, som ikke beh\u00f8ver at udnytte hele budgettet. I det illustrative eksempel ville 25 v\u00e6re den beregnede RAM-gr\u00e6nse, men ikke n\u00f8dvendigvis den rette indstilling; CPU og backend kan allerede s\u00e6tte en gr\u00e6nse f\u00f8r det.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Hvis det ansl\u00e5ede behov overstiger RAM-gr\u00e6nsen, l\u00f8ser en h\u00f8jere gr\u00e6nse ikke problemet: Det kan s\u00e6tte v\u00e6rten eller containeren under pres med hensyn til hukommelse. Omvendt kan en meget lav gr\u00e6nse medf\u00f8re, at anmodninger m\u00e5 vente. I dette tilf\u00e6lde b\u00f8r du f.eks. forbedre eksekveringstiden eller cache-udnyttelsen og unders\u00f8ge, om der er behov for yderligere ressourcer eller en begr\u00e6nsning af indg\u00e5ende belastning.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Med <strong style=\"font-weight:700;color:inherit\">dynamisk<\/strong> Her angiver du ud over den \u00f8vre gr\u00e6nse ogs\u00e5 startantalet samt minimums- og maksimumsantalet af ledige arbejdere. Start- og reservev\u00e6rdierne b\u00f8r passe til den forventede belastning og holde sig inden for den \u00f8vre gr\u00e6nse. For lidt reserveret kapacitet kan ved pludselig belastning medf\u00f8re et ekstra behov for opstart; derimod forbruger mange ledige processer ressourcer p\u00e5 lang sigt. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Med <strong style=\"font-weight:700;color:inherit\">ondemand<\/strong> Workere oprettes f\u00f8rst efter behov; inaktivitetstiden indtil deres afslutning indstilles separat. Dette kan v\u00e6re hensigtsm\u00e6ssigt for puljer, der sj\u00e6ldent bruges, men kr\u00e6ver s\u00e6rlig opm\u00e6rksomhed ved hurtige stigninger i belastningen. Ogs\u00e5 her begr\u00e6nser <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> antallet af arbejdere i puljen, der er tilg\u00e6ngelige p\u00e5 samme tid. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Flere websteder p\u00e5 samme host f\u00e5r ikke hver is\u00e6r den samlede ledige RAM uafh\u00e6ngigt af hinanden. Planl\u00e6g deres mulige pool-maksimum sammen med de \u00f8vrige tjenester og reserven. En eventuelt konfigureret global FPM-procesgr\u00e6nse kan desuden tr\u00e6de i kraft, men erstatter hverken de enkelte pool-budgetter eller kontrollen af CPU- og databasekapaciteten. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Efter \u00e6ndringer b\u00f8r du kontrollere den faktiske udnyttelsesgrad og ventetiderne over passende tidsperioder, i stedet for at betragte startv\u00e6rdien som endelig. Ved managed hosting er procesdata eller poolindstillinger muligvis ikke direkte tilg\u00e6ngelige; brug i s\u00e5 fald udbyderens m\u00e5linger og tilg\u00e6ngelige indstillinger. Hvilke indstillinger der er tilg\u00e6ngelige, afh\u00e6nger desuden af PHP-versionen og driftsmilj\u00f8et.<\/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\">Overv\u00e5gning af FPM-status og lagerplads<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">FPM-statussiden viser, om de planlagte workere er tilstr\u00e6kkelige under reel belastning. <strong style=\"font-weight:700;color:inherit\">Beskyt statusendepunktet<\/strong> for offentlig adgang: Den kan afsl\u00f8re f\u00f8lsomme oplysninger om foresp\u00f8rgsler og ressourcer. En separat konfigureret status-listener kan forblive tilg\u00e6ngelig, selv n\u00e5r hovedpuljen er overbelastet; kontroller dens tilg\u00e6ngelighed og ops\u00e6tning for din PHP-version og webserverkonfiguration.  <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Analyse af FPM-statusv\u00e6rdier i en tidsm\u00e6ssig sammenh\u00e6ng\" 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\">Analyse af FPM-statusv\u00e6rdier i en tidsm\u00e6ssig sammenh\u00e6ng<\/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\">Statusv\u00e6rdi<\/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\">Klassificering<\/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\">Opf\u00f8lgende sp\u00f8rgsm\u00e5l<\/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\">aktive processer \/ inaktive processer<\/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\">Nuv\u00e6rende ansatte og selvst\u00e6ndige arbejdstagere<\/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\">Er der stadig ledige arbejdere til r\u00e5dighed ved spidsbelastninger?<\/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\">lyttek\u00f8 \/ maksimal lyttek\u00f8<\/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\">Aktuel og hidtil st\u00f8rste k\u00f8l\u00e6ngde<\/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\">Bliver k\u00f8en l\u00e6ngere, n\u00e5r svarene kommer langsomt?<\/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\">max antal b\u00f8rn n\u00e5et<\/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\">T\u00e6ller for, hvorn\u00e5r worker-gr\u00e6nsen n\u00e5s ved \u00bbdynamic\u00ab eller \u00bbondemand\u00ab<\/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\">Stiger t\u00e6lleren i den p\u00e5g\u00e6ldende periode?<\/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\">langsomme anmodninger<\/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\">T\u00e6ller for langsomme foresp\u00f8rgsler<\/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\">Sammenfalder stigningen med l\u00e6ngere svartider?<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Betragt v\u00e6rdierne som <strong style=\"font-weight:700;color:inherit\">tidsr\u00e6kker<\/strong> sammen med foresp\u00f8rgselsvolumen og svartider. En gammel maksimumv\u00e6rdi for k\u00f8en er ikke et tegn p\u00e5 en aktuel overbelastning; ligeledes er stigningen i t\u00e6llere siden den sidste observation mere sigende end den rene samlede v\u00e6rdi. Tag i den forbindelse h\u00f8jde for poolstart eller genstarter, som \u00e6ndrer referenceperioden. <\/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=\"AI-genereret illustration af to papirstrimler med nuv\u00e6rende og tidligere punktansamlinger.\" 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\">AI-genereret illustration: Aktuelle statusv\u00e6rdier og tidligere h\u00f8jdepunkter skal s\u00e6ttes i en tidsm\u00e6ssig sammenh\u00e6ng.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">For en kendt FPM-worker kan du p\u00e5 et Linux-system med en tilg\u00e6ngelig proc-gr\u00e6nseflade hente aggregerede hukommelsesv\u00e6rdier i l\u00e6semodus. Erstat <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> ved hj\u00e6lp af den faktiske proces-ID; du skal have de n\u00f8dvendige adgangsrettigheder. Gentag observationen for flere arbejdsprocesser og belastningstilstande, i stedet for at udlede en fast poolst\u00f8rrelse ud fra en enkelt proces. <\/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\">Kopier kode<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Kopieret<\/span><span data-wh-copy-fallback hidden>Kode er markeret \u2013 kopier venligst<\/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\">Unders\u00f8gelse af langsomme anmodninger og k\u00f8er<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En webshop kan vise mange aktive arbejdsprocesser, selvom det ikke er selve PHP-udf\u00f8relsen, der udg\u00f8r den oprindelige flaskehals. Hvis anmodninger venter p\u00e5 langsomme databaseforesp\u00f8rgsler, forbliver arbejdsprocesserne bundet i mellemtiden. Hvis der kommer flere anmodninger ind, kan lytterk\u00f8en vokse, og svartiden stige, selvom CPU'en stadig har ledig kapacitet.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En h\u00f8jere gr\u00e6nse for antallet af arbejdere kan i denne situation muligvis medf\u00f8re, at flere foresp\u00f8rgsler samtidig n\u00e5r frem til databasen. Det kan <strong style=\"font-weight:700;color:inherit\">Backend-udskrivning<\/strong> og forl\u00e6nge ventetiderne yderligere. Sammenlign derfor udviklingen over tid i FPM-udnyttelsen og k\u00f8en med databasebelastningen, langsomme foresp\u00f8rgsler og eksterne tjenesteopkald, inden du h\u00e6ver gr\u00e6nsen.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">FPM-Slowlog hj\u00e6lper med at indkredse lange PHP-kald: For foresp\u00f8rgsler, der overskrider en konfigureret t\u00e6rskel, kan FPM logge et backtrace. Dette viser et udf\u00f8relsespunkt og er ikke en fuldst\u00e6ndig profil af hele foresp\u00f8rgslen. Gentagne steder kan sammenholdes med foresp\u00f8rgselens varighed og backend-metrikker; de <a href=\"https:\/\/webhosting.de\/da\/korrekt-analyse-af-php-fpm-slowlog-ydeevneoptimering-fejlfinding-analyse\/\">Vejledning i analyse af PHP-FPM-slowloggen<\/a> forklares n\u00e6rmere i den videre analyse. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Ogs\u00e5 en timeout skal adskilles fra den egentlige kapacitet. I nginx betegner <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> det tilladte interval mellem p\u00e5 hinanden f\u00f8lgende l\u00e6seoperationer fra FastCGI-serveren, ikke den samlede anmodningsvarighed generelt. En h\u00f8jere v\u00e6rdi kan tillade l\u00e6ngere ventetid, men skaber hverken yderligere arbejdsprocesser eller fremskynder databasen. <\/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\">Kapacitetsgr\u00e6nser og n\u00e6ste skridt<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Hvis RAM-budgettet ikke er tilstr\u00e6kkeligt til det ansl\u00e5ede behov, l\u00f8ser en h\u00f8jere indstilling for <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> Undg\u00e5 ikke denne konflikt: Yderligere processer kr\u00e6ver ogs\u00e5 hukommelse. Unders\u00f8g i stedet, om antallet af PHP-foresp\u00f8rgsler eller varigheden af deres worker-bel\u00e6gning kan reduceres. Hvilken foranstaltning der er hensigtsm\u00e6ssig, afh\u00e6nger af, hvor den observerede belastning opst\u00e5r.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En bedre udnyttet cache kan h\u00e5ndtere gentagne anmodninger, mens hurtigere PHP-udf\u00f8relse og databaseadgang frigiver arbejdsprocesser tidligere. Egnede baggrundsopgaver kan flyttes ud af den umiddelbare anmodningssti; dog kr\u00e6ver ogs\u00e5 disse opgaver egne ressourcer. En belastningsbegr\u00e6nsning beskytter backend ved spidsbelastninger, men kan medf\u00f8re, at anmodninger m\u00e5 vente eller afvises.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Ekstra RAM kan muligg\u00f8re et h\u00f8jere antal arbejdsprocesser, hvis hukommelsen rent faktisk udg\u00f8r den afg\u00f8rende begr\u00e6nsning. Hvis CPU\u2019en, databasen eller en ekstern tjeneste allerede er fuldt udnyttet, skal der ogs\u00e5 tages h\u00f8jde for deres kapacitet. Mere hukommelse alene garanterer derfor hverken kortere svartider eller en h\u00f8jere gennemstr\u00f8mning.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Hvis de enkelte workeres hukommelsesbehov stiger i l\u00f8bet af deres levetid, kan <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> s\u00f8rge for, at de udskiftes regelm\u00e6ssigt. Det kan hj\u00e6lpe med at h\u00e5ndtere hukommelsesl\u00e6kager i tredjepartsbiblioteker, men l\u00f8ser ikke \u00e5rsagen til dem. Forts\u00e6t med at overv\u00e5ge poolhukommelsen og foresp\u00f8rgselsm\u00f8nstrene efter en \u00e6ndring, i stedet for at bruge genstartmekanismen som erstatning for fejlfinding. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">For en mere overordnet arkitekturbeslutning tilbyder <a href=\"https:\/\/webhosting.de\/da\/nginx-enhed-som-alternativ-til-php-fpm\/\">Sammenligning af NGINX Unit og PHP-FPM<\/a> Baggrund: NGINX Unit er arkiveret og vedligeholdes ikke l\u00e6ngere. Uanset hvilken arkitektur du v\u00e6lger, b\u00f8r du foretage \u00e6ndringer p\u00e5 baggrund af <strong style=\"font-weight:700;color:inherit\">tidsr\u00e6kker<\/strong> Kontroller: Sammenlign k\u00f8en, worker-udnyttelsen, hukommelsen og svartiderne ved et lignende foresp\u00f8rgselsvolumen. P\u00e5 den m\u00e5de kan man se, om en justering rent faktisk har afhjulpet flaskehalsen eller blot flyttet den. <\/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\">Kilder og den aktuelle videnskabelige viden<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Status for unders\u00f8gelsen: <time datetime=\"2026-11-04\">2026-11-04<\/time><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Unders\u00f8gelsestidspunkt: 4. november 2026. Kontroller tilg\u00e6ngeligheden af status-listener, procesdata og pool-indstillinger for den anvendte PHP- og Linux-version samt hostingmilj\u00f8et.<\/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>Hvor mange PHP-FPM-workere kan der v\u00e6re i RAM\u2019en, og hvor mange kr\u00e6ver den faktiske trafik? Artiklen forklarer PSS-m\u00e5ling, worker-udnyttelse og begr\u00e6nsningerne ved 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 som alternativ til PHP-FPM? Arkitektur, risici og anvendelsestilf\u00e6lde","excerpt":"NGINX Unit var teknisk set mere end PHP-FPM: Applikationsserveren kunne integrere HTTP, routing, statiske filer og PHP-udf\u00f8relse. For nye PHP-hostingplatforme er Unit dog ikke et generelt alternativ, da projektet har v\u00e6ret arkiveret siden oktober 2025 og ikke l\u00e6ngere vedligeholdes. NGINX med PHP-FPM forbliver derfor det mest overskuelige standardvalg til nye systemer. Unit er f\u00f8rst og fremmest relevant i forbindelse med dokumenterede eksisterende installationer, risikoanalyser og planlagte migrationer. G\u00e5 direkte til afsnittet \u00bbArkiveret status og klart kortfattet vurdering\u00ab NGINX, PHP-FPM og Unit adskiller sig i PHP-moduler, versioner og konfigurationsbegr\u00e6nsninger Konfigurer PHP-routing og frontcontroller Sammenlign procesmodeller og RAM-budget Vurder driftsmodeller for PHP-hosting Driv Unit sikkert i eksisterende systemer Timeouts, logfiler og h\u00e6ngende processer Valg mellem nye og gamle systemer Arkiveret status og klart kortfattet vurdering Pr. 30. september 2026 lyder den klare vurdering: NGINX Unit kunne k\u00f8re PHP-applikationer direkte og samtidig modtage HTTP-forbindelser, afslutte TLS, levere statiske filer samt routere foresp\u00f8rgsler. Dermed gik funktionsomfanget betydeligt ud over PHP-FPM. Unit kan dog ikke generelt anbefales til nye produktive PHP-hostingplatforme, da det officielle projekt er blevet arkiveret siden oktober 2025 og ikke l\u00e6ngere vedligeholdes. Det betyder ikke, at en eksisterende Unit-installation straks ville v\u00e6re ude af drift. Den kan fortsat betjene en applikation, forudsat at dens afh\u00e6ngigheder, sikkerhedsforanstaltninger og en migrationsplan er dokumenteret. En ny investering skal dog vurderes anderledes: Uden l\u00f8bende projektvedligeholdelse stiger risiciene i forbindelse med sikkerhedshuller, pakketilg\u00e6ngelighed, nye operativsystemversioner og fremtidig PHP-kompatibilitet. Ved versionsangivelser er det vigtigt med en klar adskillelse. Den fortsat tilg\u00e6ngelige installationsdokumentation n\u00e6vner ofte Unit 1.34.2, mens den stabile udgivelsesversion 1.35.0 er blevet offentliggjort. Udgivelsen bekr\u00e6fter blandt andet kompatibilitet med PHP 8.5; dette medf\u00f8rer dog ikke fortsat vedligeholdelse. Udviklingsgrenen \u00bbmaster\u00ab er ikke en relevant produktversion p\u00e5 grund af dens arkiverede status."},"I2":{"id":"I2","post_id":21283,"url":"https:\/\/webhosting.de\/linux-hugepages-hosting-mariadb-redis-php-fpm-optimierung-nebula\/","title":"Linux HugePages i hosting: Et l\u00f8ft til MariaDB, Redis og PHP-FPM","excerpt":"Jeg viser konkret, hvordan Linux-hugepages fremmer MariaDB, Redis og PHP-FPM i hosting-stakken, hvor de bremser, og hvordan jeg konfigurerer dem m\u00e5lrettet. P\u00e5 den m\u00e5de s\u00e6nker jeg latenstiden, reducerer TLB-misses og sikrer, at hukommelsesstyringen forbliver forudsigelig. Hovedpunkter F\u00f8lgende stikord opsummerer de vigtigste tiltag og effekter. V\u00e6lg THP-tilstand bevidst: \u201emadvise\u201c til brede arbejdsbelastninger, \u201enever\u201c til f\u00f8lsomme tjenester som Redis. Planl\u00e6g statiske HugePages til store MariaDB-bufferpools for at s\u00e6nke latenstid og TLB-fejl. Beskyt Redis mod latenstoppe: Deaktiver THP og begr\u00e6ns fork-omkostningerne. PHP-FPM drager indirekte fordel af lavere kernel-overhead og hurtigere backends. Udf\u00f8r benchmarking og overv\u00e5gning inden idrifts\u00e6ttelse for at g\u00f8re effekterne m\u00e5lbare. HugePages og THP kort forklaret Jeg bruger HugePages til at aktivere st\u00f8rre hukommelsessider og dermed reducere antallet af sider, der skal administreres. Klassiske sider er 4 KB, mens store sider typisk er 2 MB store. Dette reducerer TLB-misses markant, CPU\u2019en bruger mindre tid p\u00e5 hukommelsesstyring, og tjenester med meget RAM-adgang reagerer hurtigere. Transparent Huge Pages (THP) fors\u00f8ger dette automatisk og kan virke uden tilpasning af appen. Praksisrapporter viser ofte 20\u201340 % hurtigere operationer, n\u00e5r arbejdsbelastninger og indstillinger passer sammen. V\u00e6lg og test THP-tilstande korrekt Jeg skelner klart mellem tilstandene \u201ealways\u201c, \u201emadvise\u201c og \u201enever\u201c, fordi de p\u00e5virker arbejdsbelastninger forskelligt. \u201ealways\u201c kan overraskende nok binde meget RAM og medf\u00f8re kopieringsarbejde, n\u00e5r tjenester forker. \u201emadvise\u201c giver mulighed for kontrol: Kun hukommelse, som appen eksplicit markerer, bruger store sider. \u201enever\u201c tilbyder maksimal forudsigelighed, is\u00e6r ved forking-intensive tjenester som Redis. Hvis du vil dykke dybere ned, kan du finde baggrundsinformation om muligheder og faldgruber her: THP: Booster eller problem. Jeg tester hver tilstand under reel belastning, m\u00e5ler latenstid, CPU-tid og RSS og tr\u00e6ffer derefter en beslutning baseret p\u00e5 fakta. Praktisk ops\u00e6tning p\u00e5 v\u00e6rten F\u00f8r jeg omstiller tjenester, s\u00f8rger jeg for reproducerbare standardindstillinger p\u00e5 v\u00e6rten og en sikker fallback-l\u00f8sning. M\u00e5lrettet indstilling af THP (boot-parametre eller systemd) Via kernel-boot: I GRUB \u201etransparent_hu"},"I3":{"id":"I3","post_id":20986,"url":"https:\/\/webhosting.de\/php-fpm-slowlog-richtig-auswerten-performance-optimierung-debugging-analyse\/","title":"S\u00e5dan analyseres PHP-FPM-slowloggen korrekt: S\u00e5dan finder du sikkert flaskehalse i ydeevnen","excerpt":"Jeg viser dig, hvordan du m\u00e5lrettet analyserer PHP-FPM-slowloggen, fortolker backtraces korrekt og udleder klare tiltag for at reducere latenstiden. P\u00e5 den m\u00e5de kan du p\u00e5lideligt finde flaskehalse i ydeevnen, prioritere tiltag og g\u00f8re indl\u00e6sningstiderne m\u00e6rkbart hurtigere for brugerne. Vigtige punkter ved l\u00e6sning af backtrace: Frame #0 viser den aktuelle flaskehals. Valg af timeout: Start med en h\u00f8j v\u00e6rdi, og s\u00e6nk den derefter gradvist. Sammenhold med adgangsloggen: Identificer langsomme URL'er med sikkerhed. T\u00e6l m\u00f8nstre: Prioriter tilbagevendende funktioner. Udled kodekorrektioner: G\u00e5 m\u00e5lrettet til v\u00e6rks med DB, API\u2019er, sl\u00f8jfer og plugins. Hvad er PHP-FPM-slowloggen? Slowloggen skriver en backtrace til en logfil for lange anmodninger og registrerer dermed det aktuelle udf\u00f8relsespunkt uden at afbryde anmodningen. Jeg kan straks se, hvilket script, hvilken URL og hvilken funktion der blokerer forl\u00f8bet. Indtastningerne indeholder tidsstempel, pool, scriptfilnavn, anmodnings-URI og k\u00e6den af funktionskald. Dermed adskiller Slowlog sig tydeligt fra klassiske fejllogfiler, da den dokumenterer ydeevne, ikke fejl. For st\u00e6rkt belastede sider som WordPress-backends leverer den hurtigt anvendelige oplysninger om ressourcekr\u00e6vende foresp\u00f8rgsler, omfattende rendering eller blokerende I\/O-operationer. Den, der forst\u00e5r disse \u00f8jebliksbilleder, kan meget hurtigt indsn\u00e6vre hoved\u00e5rsagen og planl\u00e6gge foranstaltninger. S\u00e5dan fungerer slowloggen i praksis: N\u00e5r den er aktiveret, skriver PHP-FPM et \u00f8jebliksbillede af stakken til loggen, n\u00e5r en defineret t\u00e6rskel overskrides, mens anmodningen forts\u00e6tter. Hver post starter typisk med \u201e#0\u201c, alts\u00e5 p\u00e5 det sted, hvor der netop g\u00e5r tid tabt. Mellem blokkene ser jeg ofte tomme linjer, hvilket g\u00f8r det nemmere at adskille begivenhederne. Metoden leverer stikpr\u00f8ver i stedet for fuldst\u00e6ndige profiler, men til geng\u00e6ld pr\u00e6cise henvisninger til reelle flaskehalse, s\u00e5som omfattende skabelonstier, forladte hooks eller langsomme netv\u00e6rkskald. I perioder med h\u00f8j trafik kobler jeg disse indikationer sammen med belastningstoppe og kan dermed overskueligt inddele kodestykker. S\u00e5 snart jeg ser tilbagevendende m\u00f8nstre, justerer jeg for eksempel pm.max_children og bruger til det form\u00e5let oplysningerne fra \u00bbIndstil pm.max_children korrekt\u00ab. 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":"Kapacitetsplanl\u00e6gning for PHP-FPM: Beregning af worker-instanser, RAM og samtidige anmodninger","slug":"php-fpm-kapacitetsplanlaegning-worker-ram-anmodninger","excerpt":"Hvor mange PHP-FPM-workere kan der v\u00e6re i RAM\u2019en, og hvor mange kr\u00e6ver den faktiske trafik? Artiklen forklarer PSS-m\u00e5ling, worker-udnyttelse og begr\u00e6nsningerne ved pm.max_children.","status":"draft","featured_media":22160},"verify":{"content_md5":"b99a6321bcea002fa2d3704eb8c99934","title":"Kapacitetsplanl\u00e6gning for PHP-FPM: Beregning af worker-instanser, RAM og samtidige anmodninger","slug":"php-fpm-kapacitetsplanlaegning-worker-ram-anmodninger","excerpt":"Hvor mange PHP-FPM-workere kan der v\u00e6re i RAM\u2019en, og hvor mange kr\u00e6ver den faktiske trafik? Artiklen forklarer PSS-m\u00e5ling, worker-udnyttelse og begr\u00e6nsningerne ved 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: Konfiguration \u2013 Manual"},"S2":{"id":"S2","url":"https:\/\/www.php.net\/fpm.status.php?utm_source=openai","title":"PHP: Status-side \u2013 Manual"},"S3":{"id":"S3","url":"https:\/\/docs.kernel.org\/7.0\/filesystems\/proc.html?utm_source=openai","title":"\/proc-filsystemet \u2014 Dokumentationen til Linux-kernen"},"S4":{"id":"S4","url":"https:\/\/www.php.net\/manual\/de\/install.fpm.php?utm_source=openai","title":"PHP: FastCGI Process Manager (FPM) \u2013 Manual"},"S5":{"id":"S5","url":"https:\/\/nginx.org\/en\/docs\/http\/ngx_http_fastcgi_module.html?utm_source=openai","title":"Modul ngx_http_fastcgi_module"},"S6":{"id":"S6","url":"https:\/\/www.kernel.org\/doc\/html\/v6.12\/filesystems\/proc.html?utm_source=openai","title":"\/proc-filsystemet \u2014 Dokumentationen til Linux-kernen"}},"_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":"Kapacitetsplanl\u00e6gning for PHP-FPM: Beregning af worker-instanser, RAM og samtidige anmodninger","slug":"php-fpm-kapacitetsplanlaegning-worker-ram-anmodninger","excerpt":"Hvor mange PHP-FPM-workere kan der v\u00e6re i RAM\u2019en, og hvor mange kr\u00e6ver den faktiske trafik? Artiklen forklarer PSS-m\u00e5ling, worker-udnyttelse og begr\u00e6nsningerne ved pm.max_children.","status":"draft","featured_media":0},"expected":{"content_md5":"b99a6321bcea002fa2d3704eb8c99934","title":"Kapacitetsplanl\u00e6gning for PHP-FPM: Beregning af worker-instanser, RAM og samtidige anmodninger","slug":"php-fpm-kapacitetsplanlaegning-worker-ram-anmodninger","excerpt":"Hvor mange PHP-FPM-workere kan der v\u00e6re i RAM\u2019en, og hvor mange kr\u00e6ver den faktiske trafik? Artiklen forklarer PSS-m\u00e5ling, worker-udnyttelse og begr\u00e6nsningerne ved 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":"Kapacitetsplanl\u00e6gning for PHP-FPM: Beregning af worker-instanser, RAM og samtidige anmodninger","slug":"php-fpm-kapacitetsplanlaegning-worker-ram-anmodninger","excerpt":"Hvor mange PHP-FPM-workere kan der v\u00e6re i RAM\u2019en, og hvor mange kr\u00e6ver den faktiske trafik? Artiklen forklarer PSS-m\u00e5ling, worker-udnyttelse og begr\u00e6nsningerne ved pm.max_children.","seo":{"title":"PHP-FPM-kapacitetsplanl\u00e6gning: Beregning af worker-instanser og RAM","description":"Planl\u00e6gning af PHP-FPM-workere ud fra RAM-budget og forbrug af anmodninger: S\u00e5dan kan man p\u00e5 en fornuftig m\u00e5de begr\u00e6nse og overv\u00e5ge 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":"90","_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\/da\/wp-json\/wp\/v2\/posts\/22158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/comments?post=22158"}],"version-history":[{"count":2,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts\/22158\/revisions"}],"predecessor-version":[{"id":22163,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts\/22158\/revisions\/22163"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/media\/22160"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/media?parent=22158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/categories?post=22158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/tags?post=22158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}