{"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-planowanie-wydajnosci-worker-pamiec-ram-zadania","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/php-fpm-kapazitaetsplanung-worker-ram-requests\/","title":{"rendered":"Planowanie wydajno\u015bci PHP-FPM: obliczanie liczby proces\u00f3w roboczych, pami\u0119ci RAM i liczby jednoczesnych \u017c\u0105da\u0144"},"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\">Aby sensownie zaplanowa\u0107 wydajno\u015b\u0107 PHP-FPM, nale\u017cy najpierw obliczy\u0107, ile proces\u00f3w roboczych zmie\u015bci si\u0119 w dost\u0119pnej pami\u0119ci RAM. Osobno nale\u017cy oszacowa\u0107, ile proces\u00f3w roboczych b\u0119dzie potrzebnych do obs\u0142ugi ruchu faktycznie nap\u0142ywaj\u0105cego do puli. <strong style=\"font-weight:700;color:inherit\">pm.max_children<\/strong> Ogranicza liczb\u0119 pracownik\u00f3w dost\u0119pnych jednocze\u015bnie w ka\u017cdej puli, ale nie jest to ani liczba odwiedzaj\u0105cych, ani bezpo\u015brednia warto\u015b\u0107 przepustowo\u015bci. R\u00f3wnie\u017c obci\u0105\u017cenie procesora, bazy danych oraz szczyty obci\u0105\u017cenia decyduj\u0105 o tym, jakie ustawienie jest wykonalne w praktyce. <\/p>\n<nav class=\"wh-toc\" aria-label=\"Tre\u015b\u0107 tego artyku\u0142u\" 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\">Przejd\u017a bezpo\u015brednio do sekcji<\/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\">Co ogranicza proces roboczy PHP-FPM<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#prozessmanager\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Zrozumienie roli mened\u017cera proces\u00f3w i kolejki<\/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\">Prawid\u0142owe przypisanie pami\u0119ci typu \u201eworker\u201d<\/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\">Obliczanie bud\u017cetu pami\u0119ci RAM i liczby pracownik\u00f3w<\/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\">Oszacowanie liczby potrzebnych pracownik\u00f3w na podstawie zapyta\u0144<\/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\">Pobieranie ustawie\u0144 puli z planu<\/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\">Monitorowanie stanu FPM i pami\u0119ci<\/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\">Analiza powolnych \u017c\u0105da\u0144 i kolejek<\/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\">Ograniczenia wydajno\u015bci i kolejne kroki<\/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\">Co ogranicza proces roboczy PHP-FPM<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">PHP-FPM zarz\u0105dza procesami PHP w pulach. Jeden <strong style=\"font-weight:700;color:inherit\">Pracownik<\/strong> przetwarza po jednym zapytaniu; ustawienie puli <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> ogranicza liczb\u0119 jednocze\u015bnie dost\u0119pnych proces\u00f3w roboczych, a tym samym liczb\u0119 \u017c\u0105da\u0144 PHP przetwarzanych jednocze\u015bnie przez t\u0119 pul\u0119. W przypadku wielu pul ograniczenie to dotyczy danej puli, a nie automatycznie ca\u0142ego serwera. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Liczba ta nie odnosi si\u0119 ani do liczby zalogowanych u\u017cytkownik\u00f3w, ani nie stanowi bezpo\u015bredniej warto\u015bci liczby \u017c\u0105da\u0144 na sekund\u0119. Jeden u\u017cytkownik mo\u017ce generowa\u0107 wiele \u017c\u0105da\u0144, podczas gdy zalogowany u\u017cytkownik nie zajmuje procesora mi\u0119dzy dwiema czynno\u015bciami. Z drugiej strony pojedyncze, wolno dzia\u0142aj\u0105ce \u017c\u0105danie mo\u017ce zajmowa\u0107 procesor d\u0142u\u017cej ni\u017c kilka kr\u00f3tkich \u017c\u0105da\u0144 nast\u0119puj\u0105cych po sobie.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Nie ka\u017cde wywo\u0142anie strony dociera do PHP-FPM. Je\u015bli serwer WWW bezpo\u015brednio dostarcza plik statyczny lub je\u015bli pami\u0119\u0107 podr\u0119czna umieszczona przed serwerem w pe\u0142ni obs\u0142uguje \u017c\u0105danie, w zale\u017cno\u015bci od architektury nie jest do tego potrzebny procesor PHP. Z kolei nieudane pr\u00f3by odczytu z pami\u0119ci podr\u0119cznej, zalogowani u\u017cytkownicy oraz strony administracyjne mog\u0105 nadal generowa\u0107 \u017c\u0105dania PHP i tymczasowo zwi\u0119ksza\u0107 obci\u0105\u017cenie.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Dlatego te\u017c dla planowania wydajno\u015bci kluczowe znaczenie maj\u0105 dwie odr\u0119bne kwestie: ilu worker\u00f3w zmie\u015bci si\u0119 wraz z rezerw\u0105 w dost\u0119pnej pami\u0119ci RAM? I ilu worker\u00f3w faktycznie potrzeba do obs\u0142ugi ruchu nap\u0142ywaj\u0105cego do puli, aby \u017c\u0105dania nie czeka\u0142y zbyt d\u0142ugo? Wysoka warto\u015b\u0107 dla <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> nie odpowiada samodzielnie na \u017cadne z tych pyta\u0144.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Nawet je\u015bli dost\u0119pna jest wystarczaj\u0105ca ilo\u015b\u0107 pami\u0119ci, procesor, baza danych lub us\u0142ugi zewn\u0119trzne mog\u0105 ogranicza\u0107 rzeczywist\u0105 pojemno\u015b\u0107. Dodatkowe procesy robocze umo\u017cliwiaj\u0105 wprawdzie wykonywanie wi\u0119kszej liczby zada\u0144 PHP r\u00f3wnolegle, ale mog\u0105 jednocze\u015bnie zwi\u0119kszy\u0107 obci\u0105\u017cenie ju\u017c i tak wolnej us\u0142ugi. Warto\u015b\u0107 puli stanowi zatem limit operacyjny, a nie gwarancj\u0119 wydajno\u015bci.<\/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\">Zrozumienie roli mened\u017cera proces\u00f3w i kolejki<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Der <strong style=\"font-weight:700;color:inherit\">Kierownik ds. proces\u00f3w<\/strong> okre\u015bla, kiedy PHP-FPM uruchamia procesy robocze. W przypadku <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> czy liczba proces\u00f3w w rezerwie odpowiada warto\u015bci <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>. Dzi\u0119ki temu mo\u017cna dobrze zaplanowa\u0107 liczb\u0119 proces\u00f3w, ale jednocze\u015bnie anga\u017cuje to zasoby nawet przy niewielkim obci\u0105\u017ceniu. Sam limit musi nadal by\u0107 dostosowany do dost\u0119pnej pami\u0119ci. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Na stronie <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> FPM dostosowuje liczb\u0119 proces\u00f3w: dodatkowo ustawia si\u0119 liczb\u0119 pocz\u0105tkow\u0105 oraz minimaln\u0105 i maksymaln\u0105 liczb\u0119 wolnych proces\u00f3w. W przypadku <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> Procesy typu \u201eworker\u201d s\u0105 uruchamiane dopiero w razie potrzeby i s\u0105 zamykane po up\u0142ywie skonfigurowanego czasu bezczynno\u015bci. Pozwala to oszcz\u0119dza\u0107 zasoby w przypadku rzadko wykorzystywanych pul; jednak w przypadku nag\u0142ego wzrostu obci\u0105\u017cenia konieczne jest najpierw uruchomienie nowych mocy obliczeniowych. <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Por\u00f3wnanie mened\u017cer\u00f3w proces\u00f3w\" 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\">Por\u00f3wnanie mened\u017cer\u00f3w proces\u00f3w<\/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\">Tryb<\/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\">Wa\u017cne ustawienia<\/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\">Zastosowanie i rozwa\u017cenie<\/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\">statyczny<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">pm.max_children<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Sta\u0142a liczba pracownik\u00f3w; \u0142atwo\u015b\u0107 planowania, ale zasoby pozostaj\u0105 niewykorzystane w okresach bezczynno\u015bci.<\/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\">dynamiczny<\/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\">Dostosowanie do zmieniaj\u0105cych si\u0119 potrzeb; nale\u017cy skoordynowa\u0107 dzia\u0142ania wolnych i rozpoczynaj\u0105cych prac\u0119 pracownik\u00f3w.<\/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\">na \u017c\u0105danie<\/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\">Procesy typu \u201eworker\u201d uruchamiane w razie potrzeby; pozwala to oszcz\u0119dza\u0107 zasoby w przypadku rzadko wykorzystywanych pul; nale\u017cy uwzgl\u0119dni\u0107 uruchamianie proces\u00f3w w przypadku wzrostu obci\u0105\u017cenia.<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Je\u015bli wszyscy pracownicy s\u0105 zaj\u0119ci, kolejne zapytania mog\u0105 by\u0107 kierowane do <strong style=\"font-weight:700;color:inherit\">Kolejka s\u0142uchaczy<\/strong> czeka\u0107 na wolny proces. Status FPM pokazuje mi\u0119dzy innymi aktualn\u0105 i maksymaln\u0105 d\u0142ugo\u015b\u0107 kolejki. Jednak sama wysoka warto\u015b\u0107 maksymalna nie pozwala stwierdzi\u0107, czy pula jest w danej chwili przeci\u0105\u017cona; do tego potrzebny jest kontekst czasowy. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">D\u0142u\u017csza kolejka nie tworzy dodatkowych proces\u00f3w roboczych ani nie przyspiesza dzia\u0142ania wolnej bazy danych. Mo\u017ce ona tymczasowo przyjmowa\u0107 zapytania, ale jedynie przesuwa czas oczekiwania na etap poprzedzaj\u0105cy przetwarzanie w PHP. Dlatego przy wyborze mened\u017cera proces\u00f3w nale\u017cy wzi\u0105\u0107 pod uwag\u0119 zar\u00f3wno typowy przebieg obci\u0105\u017cenia, jak i skutki kr\u00f3tkotrwa\u0142ych szczyt\u00f3w obci\u0105\u017cenia.<\/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\">Prawid\u0142owe przypisanie pami\u0119ci typu \u201eworker\u201d<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Wymagania pami\u0119ciowe jednego pracownika nie da si\u0119 wiarygodnie okre\u015bli\u0107 wy\u0142\u0105cznie na podstawie limitu konfiguracyjnego PHP. Do cel\u00f3w planowania bardziej przydatne s\u0105 dane dotycz\u0105ce proces\u00f3w w odpowiednich warunkach obci\u0105\u017cenia. Istotne jest przy tym, czy analizujesz pami\u0119\u0107 rezydentn\u0105 pojedynczego procesu, czy te\u017c chcesz oszacowa\u0107 zu\u017cycie pami\u0119ci przez ca\u0142\u0105 grup\u0119 pracownik\u00f3w PHP-FPM.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><strong style=\"font-weight:700;color:inherit\">RSS<\/strong> opisuje pami\u0119\u0107 rezydentn\u0105 procesu. Je\u015bli kilka proces\u00f3w roboczych korzysta z tych samych stron pami\u0119ci, mog\u0105 one znajdowa\u0107 si\u0119 w ich odpowiednich warto\u015bciach RSS. Je\u015bli zsumujesz warto\u015bci RSS wszystkich proces\u00f3w roboczych, wsp\u00f3lnie u\u017cywane strony mog\u0105 w niekt\u00f3rych przypadkach pojawi\u0107 si\u0119 wielokrotnie; suma ta nie stanowi zatem dok\u0142adnego odzwierciedlenia wsp\u00f3lnie zajmowanej pami\u0119ci fizycznej. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><strong style=\"font-weight:700;color:inherit\">PSS<\/strong> rozdziela strony wsp\u00f3\u0142u\u017cytkowane proporcjonalnie mi\u0119dzy uczestnicz\u0105ce procesy. Suma warto\u015bci PSS w grupie proces\u00f3w jest zatem cz\u0119sto bardziej przydatna do planowania pami\u0119ci ni\u017c suma warto\u015bci RSS. Pozostaje to jednak jedynie obrazem sytuacji w danym momencie: je\u015bli zmieni si\u0119 liczba proces\u00f3w wsp\u00f3\u0142u\u017cytkuj\u0105cych strony, zmieniaj\u0105 si\u0119 r\u00f3wnie\u017c ich odpowiednie udzia\u0142y. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Rozwa\u017cmy kilka proces\u00f3w roboczych w przypadku typowych, a tak\u017ce \u017c\u0105dania wymagaj\u0105cych du\u017cej ilo\u015bci pami\u0119ci. \u015awie\u017co uruchomiony proces lub pojedyncza \u015brednia mog\u0105 nie odzwierciedla\u0107 rzeczywistego zapotrzebowania w przysz\u0142o\u015bci. Ca\u0142kowita warto\u015b\u0107 PSS puli przy r\u00f3\u017cnych liczbach proces\u00f3w roboczych i stanach obci\u0105\u017cenia pomaga uzyska\u0107 ostro\u017cne przybli\u017cenie; ekstrapolacja na wi\u0119ksz\u0105 liczb\u0119 proces\u00f3w roboczych pozostaje niepewna ze wzgl\u0119du na zmienne udzia\u0142y wsp\u00f3lne i prywatne.<\/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> nie stanowi wiarygodnego wska\u017anika ca\u0142kowitej pami\u0119ci systemu operacyjnego zajmowanej przez proces FPM i nie zast\u0119puje tej obserwacji. Pami\u0119ci wsp\u00f3\u0142dzielonej, np. przez OPcache, nie nale\u017cy og\u00f3lnie odejmowa\u0107 po raz drugi od limitu, je\u015bli jest ona ju\u017c uwzgl\u0119dniona proporcjonalnie w wykorzystywanej puli PSS. Nale\u017cy jednak uwzgl\u0119dni\u0107 inne us\u0142ugi oraz rezerw\u0119.<\/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\">Obliczanie bud\u017cetu pami\u0119ci RAM i liczby pracownik\u00f3w<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Punktem wyj\u015bcia jest faktycznie dost\u0119pna pami\u0119\u0107 RAM: na ho\u015bcie jest to pami\u0119\u0107 dost\u0119pna dla us\u0142ug, a w kontenerze \u2013 efektywny limit pami\u0119ci. Nale\u017cy od tego odj\u0105\u0107 zapotrzebowanie systemu operacyjnego, serwera WWW, ewentualnej lokalnej bazy danych oraz innych us\u0142ug. W obliczeniach nale\u017cy r\u00f3wnie\u017c uwzgl\u0119dni\u0107 inne pule FPM oraz rezerw\u0119 na wahania zu\u017cycia.<\/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=\"Wygenerowany przez sztuczn\u0105 inteligencj\u0119 obraz symboliczny przedstawiaj\u0105cy wyj\u0119ty modu\u0142 pami\u0119ci RAM na antystatycznej macie warsztatowej.\" 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\">Ilustracja wygenerowana przez sztuczn\u0105 inteligencj\u0119: Dost\u0119pna pami\u0119\u0107 RAM ogranicza bud\u017cet dla pul PHP-FPM.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Pozosta\u0142a cz\u0119\u015b\u0107 to <strong style=\"font-weight:700;color:inherit\">Bud\u017cet na basen<\/strong>. Aby oszacowa\u0107 warto\u015b\u0107 dla pracownika, obserwuj sum\u0119 PSS pracownik\u00f3w w puli przy r\u00f3\u017cnych liczbach proces\u00f3w i stanach obci\u0105\u017cenia. We\u017a pod uwag\u0119 zar\u00f3wno typowe zapytania, jak i punkty ko\u0144cowe wymagaj\u0105ce du\u017cej ilo\u015bci pami\u0119ci. Podziel dan\u0105 sum\u0119 przez rozpatrywan\u0105 liczb\u0119 pracownik\u00f3w i na podstawie kilku obserwacji wyznacz ostro\u017cn\u0105 warto\u015b\u0107 przybli\u017con\u0105. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Poni\u017csze obliczenia stanowi\u0105 przyk\u0142ad ilustruj\u0105cy spos\u00f3b oblicze\u0144, a nie wynik pomiaru. Przyj\u0119te warto\u015bci s\u0142u\u017c\u0105 wy\u0142\u0105cznie do zilustrowania sposobu oblicze\u0144; nie stanowi\u0105 one zalecenia dotycz\u0105cego konkretnego zastosowania. Wynik jest zaokr\u0105glany w d\u00f3\u0142 do liczby ca\u0142kowitej pracownik\u00f3w.<\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Przyk\u0142adowe planowanie pami\u0119ci RAM dla pojedynczej puli\" 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\">Przyk\u0142adowe planowanie pami\u0119ci RAM dla pojedynczej puli<\/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\">Krok obliczeniowy<\/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\">Akceptacja<\/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\">Klasyfikacja<\/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\">Rzeczywisty limit pami\u0119ci RAM<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">4 096 MiB<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Granica hosta lub kontenera w przyk\u0142adzie<\/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\">Inne us\u0142ugi, pule i rezerwy<\/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\">Odliczenie przyznane \u0142\u0105cznie<\/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\">Bud\u017cet dla rozpatrywanej puli<\/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\">Warto\u015b\u0107 przybli\u017cona PSS na pracownika<\/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\">Przyj\u0119ta konserwatywna warto\u015b\u0107 planistyczna<\/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\">Obliczeniowy limit pami\u0119ci RAM<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">25 pracownik\u00f3w<\/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 podzielone przez 80, zaokr\u0105glone w d\u00f3\u0142<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">25 proces\u00f3w typu \u201eworker\u201d nie gwarantuje bezpiecznego przydzia\u0142u pami\u0119ci. System PSS rozdziela strony wsp\u00f3\u0142dzielone proporcjonalnie, a ich liczba zmienia si\u0119 wraz z liczb\u0105 proces\u00f3w, kt\u00f3re je wsp\u00f3\u0142dziel\u0105. R\u00f3wnie\u017c inny sk\u0142ad \u017c\u0105da\u0144 mo\u017ce wp\u0142yn\u0105\u0107 na zapotrzebowanie na pami\u0119\u0107 prywatn\u0105; dlatego te\u017c prognoz\u0119 nale\u017cy zweryfikowa\u0107 w odniesieniu do obserwowanego ca\u0142kowitego zu\u017cycia i obowi\u0105zuj\u0105cego limitu. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Je\u015bli pami\u0119\u0107 wsp\u00f3\u0142dzielona, taka jak OPcache, jest ju\u017c uwzgl\u0119dniona proporcjonalnie w wykorzystanej sumie PSS, nie nale\u017cy jej ponownie odlicza\u0107 rycza\u0142towo jako pe\u0142nej pozycji dodatkowej. Nale\u017cy jednak uwzgl\u0119dni\u0107 rezerw\u0119 na te cz\u0119\u015bci pami\u0119ci, kt\u00f3re nie zosta\u0142y uwzgl\u0119dnione w analizie. Zw\u0142aszcza w przypadku limitu kontener\u00f3w liczy si\u0119 ostatecznie zu\u017cycie wszystkich proces\u00f3w w ramach tego limitu, a nie tylko szacowana suma proces\u00f3w roboczych.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Sam nowo uruchomiony procesor nie stanowi wystarczaj\u0105cej podstawy do oceny: by\u0107 mo\u017ce nie przetworzy\u0142 jeszcze \u017cadnego wymagaj\u0105cego \u017c\u0105dania. Dlatego nale\u017cy por\u00f3wna\u0107 kilka moment\u00f3w i odnotowa\u0107, kt\u00f3re punkty ko\u0144cowe oraz ile proces\u00f3w roboczych by\u0142o w ka\u017cdym z nich zaanga\u017cowanych. W ten spos\u00f3b mo\u017cna sprawdzi\u0107, czy wybrana warto\u015b\u0107 przybli\u017cona sprawdza si\u0119 r\u00f3wnie\u017c w mniej korzystnych, ale realistycznych warunkach pracy.<\/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\">Oszacowanie liczby potrzebnych pracownik\u00f3w na podstawie zapyta\u0144<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Obliczenia dotycz\u0105ce pami\u0119ci RAM okre\u015blaj\u0105, ilu pracownik\u00f3w prawdopodobnie zmie\u015bci si\u0119 w puli. Natomiast zapotrzebowanie zale\u017cy od tego, ile \u017c\u0105da\u0144 PHP faktycznie nap\u0142ywa do danej puli i jak d\u0142ugo zajmuj\u0105 one jednego pracownika. Jako pierwsze przybli\u017cenie przyjmuje si\u0119: \u015brednia liczba pracownik\u00f3w zaj\u0119tych jednocze\u015bnie r\u00f3wna si\u0119 liczbie \u017c\u0105da\u0144 PHP na sekund\u0119 pomno\u017conej przez \u015bredni czas zaj\u0119to\u015bci pracownika w sekundach.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Przyk\u0142ad obliczeniowy o charakterze ilustracyjnym, nieoparty na pomiarach: Przy za\u0142o\u017ceniu 20 \u017c\u0105da\u0144 PHP na sekund\u0119 i \u015brednim czasie obs\u0142ugi wynosz\u0105cym 0,25 sekundy \u015brednio zaj\u0119tych jest pi\u0119ciu pracownik\u00f3w. Jest to \u015brednia z rozpatrywanego okresu. Nie oznacza to ani tego, \u017ce zawsze dzia\u0142a dok\u0142adnie pi\u0119\u0107 proces\u00f3w, ani tego, \u017ce pi\u0119\u0107 proces\u00f3w wystarczy jako limit puli na kr\u00f3tkie okresy szczytowego obci\u0105\u017cenia.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Licz\u0105c liczb\u0119 zapyta\u0144, nie nale\u017cy uwzgl\u0119dnia\u0107 wszystkich wy\u015bwietle\u0144 stron bez weryfikacji. Je\u015bli pami\u0119\u0107 podr\u0119czna dostarcza wiele odpowiedzi bez wywo\u0142ywania PHP, trafienia te nie obci\u0105\u017caj\u0105 puli. Z drugiej strony, nieudane pr\u00f3by odczytu z pami\u0119ci podr\u0119cznej, zalogowani u\u017cytkownicy oraz dost\u0119py administracyjne mog\u0105 czasami generowa\u0107 wi\u0119ksze obci\u0105\u017cenie dla PHP, ni\u017c sugerowa\u0142aby \u015brednia z ca\u0142ego dnia.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Die <strong style=\"font-weight:700;color:inherit\">Czas pracy pracownika<\/strong> obejmuje r\u00f3wnie\u017c czasy oczekiwania w trakcie przetwarzania, na przyk\u0142ad na odpowied\u017a z bazy danych lub serwisu zewn\u0119trznego. Nie nale\u017cy jej automatycznie uto\u017csamia\u0107 z czasem odpowiedzi widocznym w przegl\u0105darce. Zgodnie z <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 mo\u017ce ju\u017c zako\u0144czy\u0107 wysy\u0142anie odpowiedzi do klienta, a mimo to nadal wykonywa\u0107 kolejne zadania w procesie roboczym. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Aby zapewni\u0107 akceptowalne czasy oczekiwania, potrzebujesz rezerwy powy\u017cej \u015bredniego obci\u0105\u017cenia. To, jak du\u017ca musi by\u0107 ta rezerwa, zale\u017cy mi\u0119dzy innymi od waha\u0144 obci\u0105\u017cenia, powolnych punkt\u00f3w ko\u0144cowych oraz po\u017c\u0105danego docelowego czasu odpowiedzi. Pomno\u017cenie szczytowej liczby \u017c\u0105da\u0144 na sekund\u0119 przez wysoki percentyl op\u00f3\u017anienia mo\u017ce stanowi\u0107 ostro\u017cn\u0105 analiz\u0119 scenariusza, nie jest jednak precyzyjn\u0105 prognoz\u0105 dotycz\u0105c\u0105 kolejki.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Dlatego nale\u017cy rozpatrywa\u0107 poszczeg\u00f3lne okresy osobno: kr\u00f3tki szczyt aktywno\u015bci i spokojny ruch nocny mog\u0105 da\u0107 t\u0119 sam\u0105 \u015bredni\u0105 dzienn\u0105, co bardziej r\u00f3wnomierny ruch, ale stawiaj\u0105 r\u00f3\u017cne wymagania. Je\u015bli czas zaj\u0119to\u015bci wzrasta z powodu powolnego dzia\u0142ania zaplecza, przy tej samej cz\u0119stotliwo\u015bci przybywania ro\u015bnie r\u00f3wnie\u017c \u015brednia liczba zaj\u0119tych pracownik\u00f3w. Zapotrzebowanie nie jest zatem wy\u0142\u0105cznie funkcj\u0105 nat\u0119\u017cenia ruchu odwiedzaj\u0105cych.<\/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\">Pobieranie ustawie\u0144 puli z planu<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Por\u00f3wnaj teraz g\u00f3rn\u0105 granic\u0119 opart\u0105 na pami\u0119ci RAM z szacowanym zapotrzebowaniem, uwzgl\u0119dniaj\u0105c margines bezpiecze\u0144stwa. Je\u015bli zapotrzebowanie mie\u015bci si\u0119 poni\u017cej tej granicy, wybierz ostro\u017cn\u0105 warto\u015b\u0107 pocz\u0105tkow\u0105 dla <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>, kt\u00f3ry nie musi wykorzystywa\u0107 ca\u0142ego bud\u017cetu. W podanym przyk\u0142adzie 25 stanowi\u0142oby teoretyczny limit pami\u0119ci RAM, ale niekoniecznie by\u0142oby to odpowiednie ustawienie; procesor i backend mog\u0105 wprowadzi\u0107 ograniczenia ju\u017c wcze\u015bniej.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Je\u015bli szacowane zapotrzebowanie przekracza limit pami\u0119ci RAM, zwi\u0119kszenie tego limitu nie rozwi\u0105\u017ce sprzeczno\u015bci: mo\u017ce to spowodowa\u0107 obci\u0105\u017cenie pami\u0119ci hosta lub kontenera. Z drugiej strony bardzo niski limit mo\u017ce powodowa\u0107 op\u00f3\u017anienia w obs\u0142udze \u017c\u0105da\u0144. W takim przypadku nale\u017cy na przyk\u0142ad poprawi\u0107 czas wykonania lub wykorzystanie pami\u0119ci podr\u0119cznej oraz sprawdzi\u0107, czy konieczne jest zwi\u0119kszenie zasob\u00f3w lub ograniczenie obci\u0105\u017cenia wej\u015bciowego.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Na stronie <strong style=\"font-weight:700;color:inherit\">dynamiczny<\/strong> Opr\u00f3cz g\u00f3rnego limitu nale\u017cy okre\u015bli\u0107 liczb\u0119 pocz\u0105tkow\u0105 oraz minimaln\u0105 i maksymaln\u0105 liczb\u0119 wolnych proces\u00f3w. Warto\u015bci pocz\u0105tkowe i rezerwowe powinny by\u0107 dostosowane do przewidywanego obci\u0105\u017cenia i mie\u015bci\u0107 si\u0119 w ramach limitu g\u00f3rnego. Zbyt ma\u0142a rezerwa mocy obliczeniowej mo\u017ce w przypadku nag\u0142ego wzrostu obci\u0105\u017cenia oznacza\u0107 konieczno\u015b\u0107 uruchomienia dodatkowych proces\u00f3w; z kolei sta\u0142a obecno\u015b\u0107 du\u017cej liczby wolnych proces\u00f3w zu\u017cywa zasoby. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Na stronie <strong style=\"font-weight:700;color:inherit\">na \u017c\u0105danie<\/strong> Workery s\u0105 tworzone dopiero w razie potrzeby; czas bezczynno\u015bci do momentu ich zako\u0144czenia ustawia si\u0119 osobno. Mo\u017ce to by\u0107 przydatne w przypadku rzadko wykorzystywanych pul, wymaga jednak szczeg\u00f3lnej uwagi w przypadku gwa\u0142townych wzrost\u00f3w obci\u0105\u017cenia. R\u00f3wnie\u017c w tym przypadku ogranicza <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> liczba pracownik\u00f3w z puli dost\u0119pnych jednocze\u015bnie. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Kilka stron internetowych na tym samym serwerze nie otrzymuje niezale\u017cnie od siebie ca\u0142ej dost\u0119pnej pami\u0119ci RAM. Nale\u017cy rozplanowa\u0107 ich potencjalne maksymalne limity puli wraz z pozosta\u0142ymi us\u0142ugami i rezerw\u0105. Dodatkowo mo\u017ce obowi\u0105zywa\u0107 ewentualnie skonfigurowany globalny limit proces\u00f3w FPM, kt\u00f3ry jednak nie zast\u0119puje ani poszczeg\u00f3lnych limit\u00f3w puli, ani weryfikacji wydajno\u015bci procesora i bazy danych. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Po wprowadzeniu zmian sprawd\u017a rzeczywiste obci\u0105\u017cenie i czasy oczekiwania w odpowiednich przedzia\u0142ach czasowych, zamiast traktowa\u0107 warto\u015b\u0107 pocz\u0105tkow\u0105 jako ostateczn\u0105. W przypadku hostingu zarz\u0105dzanego dane procesowe lub ustawienia puli mog\u0105 nie by\u0107 bezpo\u015brednio dost\u0119pne; w takim przypadku nale\u017cy skorzysta\u0107 z wska\u017anik\u00f3w i udost\u0119pnionych opcji dostawcy. Dost\u0119pno\u015b\u0107 poszczeg\u00f3lnych ustawie\u0144 zale\u017cy r\u00f3wnie\u017c od wersji PHP i \u015brodowiska operacyjnego.<\/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\">Monitorowanie stanu FPM i pami\u0119ci<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Strona stanu FPM pokazuje, czy zaplanowane instancje robocze s\u0105 wystarczaj\u0105ce przy rzeczywistym obci\u0105\u017ceniu. <strong style=\"font-weight:700;color:inherit\">Chro\u0144 punkt ko\u0144cowy stanu<\/strong> przed dost\u0119pem publicznym: mo\u017ce ujawnia\u0107 poufne informacje dotycz\u0105ce zapyta\u0144 i zasob\u00f3w. Oddzielnie skonfigurowany modu\u0142 monitoruj\u0105cy stan mo\u017ce pozosta\u0107 dost\u0119pny nawet w przypadku przeci\u0105\u017cenia g\u0142\u00f3wnej puli; sprawd\u017a jego dost\u0119pno\u015b\u0107 i konfiguracj\u0119 dla swojej wersji PHP oraz konfiguracji serwera WWW.  <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Analiza warto\u015bci stanu FPM w kontek\u015bcie czasowym\" 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\">Analiza warto\u015bci stanu FPM w kontek\u015bcie czasowym<\/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\">Warto\u015b\u0107 stanu<\/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\">Klasyfikacja<\/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\">Pytanie uzupe\u0142niaj\u0105ce<\/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\">procesy aktywne \/ procesy bezczynne<\/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\">Obecnie zatrudnieni i niezale\u017cni pracownicy<\/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\">Czy w okresach szczytowego obci\u0105\u017cenia pozostaj\u0105 dost\u0119pne wolne procesy robocze?<\/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\">kolejka odtwarzania \/ maksymalna kolejka odtwarzania<\/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\">Aktualna i dotychczasowa maksymalna d\u0142ugo\u015b\u0107 kolejki<\/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\">Czy kolejka wyd\u0142u\u017ca si\u0119, gdy odpowiedzi s\u0105 powolne?<\/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\">maksymalna liczba osi\u0105gni\u0119tych dzieci<\/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\">Licznik osi\u0105gni\u0119cia limitu pracownik\u00f3w w trybie dynamic lub 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\">Czy licznik ro\u015bnie w rozpatrywanym okresie?<\/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\">powolne \u017c\u0105dania<\/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\">Licznik wolnych zapyta\u0144<\/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\">Czy wzrost ten idzie w parze z wyd\u0142u\u017ceniem czasu odpowiedzi?<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Traktuj te warto\u015bci jako <strong style=\"font-weight:700;color:inherit\">szeregi czasowe<\/strong> wraz z liczb\u0105 zapyta\u0144 i czasem odpowiedzi. Dawna warto\u015b\u0107 szczytowa kolejki nie \u015bwiadczy o aktualnym przeci\u0105\u017ceniu; podobnie w przypadku licznik\u00f3w wzrost ich warto\u015bci od ostatniej obserwacji ma wi\u0119ksze znaczenie ni\u017c sama warto\u015b\u0107 ca\u0142kowita. Nale\u017cy przy tym uwzgl\u0119dni\u0107 moment uruchomienia puli lub jej ponowne uruchomienie, kt\u00f3re powoduj\u0105 zmian\u0119 okresu odniesienia. <\/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=\"Ilustracja wygenerowana przez sztuczn\u0105 inteligencj\u0119, przedstawiaj\u0105ca dwa paski papieru z obecnymi i wcze\u015bniejszymi skupiskami punkt\u00f3w.\" 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\">Ilustracja wygenerowana przez sztuczn\u0105 inteligencj\u0119: aktualne warto\u015bci i poprzednie maksima wymagaj\u0105 odniesienia czasowego.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">W przypadku znanego modu\u0142u FPM w systemie Linux z dost\u0119pnym interfejsem proc mo\u017cna odczyta\u0107 zagregowane warto\u015bci pami\u0119ci. Zast\u0105p <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> za pomoc\u0105 rzeczywistego identyfikatora procesu; musisz posiada\u0107 odpowiednie uprawnienia dost\u0119pu. Powt\u00f3rz obserwacj\u0119 dla kilku proces\u00f3w roboczych i r\u00f3\u017cnych stan\u00f3w obci\u0105\u017cenia, zamiast wyci\u0105ga\u0107 wnioski o sta\u0142ej wielko\u015bci puli na podstawie pojedynczego procesu. <\/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\">Skopiuj kod<\/button><span class=\"wh-copy-status\" aria-live=\"polite\"><\/span><span data-wh-copy-success hidden>Skopiowano<\/span><span data-wh-copy-fallback hidden>Zaznaczony kod \u2013 prosz\u0119 skopiowa\u0107<\/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\">Analiza powolnych \u017c\u0105da\u0144 i kolejek<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Sklep mo\u017ce wy\u015bwietla\u0107 wiele aktywnych proces\u00f3w roboczych, mimo \u017ce to nie samo wykonywanie kodu PHP stanowi pierwotne w\u0105skie gard\u0142o. Je\u015bli \u017c\u0105dania oczekuj\u0105 na powolne zapytania do bazy danych, procesy w tym czasie pozostaj\u0105 zaj\u0119te. W przypadku nap\u0142ywania kolejnych \u017c\u0105da\u0144 kolejka s\u0142uchaczy mo\u017ce si\u0119 wyd\u0142u\u017cy\u0107, a czas odpowiedzi wyd\u0142u\u017cy\u0107, nawet je\u015bli procesor nadal dysponuje wolnymi zasobami.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Wy\u017cszy limit liczby proces\u00f3w roboczych mo\u017ce w tej sytuacji umo\u017cliwi\u0107 jednoczesne przes\u0142anie wi\u0119kszej liczby zapyta\u0144 do bazy danych. Mo\u017ce to spowodowa\u0107, \u017ce <strong style=\"font-weight:700;color:inherit\">Drukowanie w backendzie<\/strong> i jeszcze bardziej wyd\u0142u\u017cy\u0107 czas oczekiwania. Dlatego przed zwi\u0119kszeniem limitu por\u00f3wnaj wykresy obci\u0105\u017cenia FPM i kolejki z obci\u0105\u017ceniem bazy danych, powolnymi zapytaniami oraz wywo\u0142aniami us\u0142ug zewn\u0119trznych.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Slowlog FPM pomaga zaw\u0119zi\u0107 zakres d\u0142ugotrwa\u0142ych wywo\u0142a\u0144 PHP: w przypadku \u017c\u0105da\u0144 przekraczaj\u0105cych skonfigurowany pr\u00f3g FPM mo\u017ce zarejestrowa\u0107 \u015blad wykonania. Pokazuje on punkt wykonania i nie stanowi pe\u0142nego profilu ca\u0142ego \u017c\u0105dania. Powtarzaj\u0105ce si\u0119 fragmenty mo\u017cna por\u00f3wna\u0107 z czasem trwania \u017c\u0105dania i metrykami zaplecza; <a href=\"https:\/\/webhosting.de\/pl\/prawidlowa-analiza-pliku-slowlog-w-php-fpm-optymalizacja-wydajnosci-debugowanie-analiza\/\">Instrukcja analizy pliku slowlog PHP-FPM<\/a> wyja\u015bnia to dalsza analiza. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">R\u00f3wnie\u017c czas oczekiwania nale\u017cy odr\u00f3\u017cni\u0107 od rzeczywistej przepustowo\u015bci. W przypadku nginx okre\u015bla si\u0119 <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> dopuszczalny odst\u0119p mi\u0119dzy kolejnymi operacjami odczytu z serwera FastCGI, a nie og\u00f3lny czas trwania \u017c\u0105dania. Wy\u017csza warto\u015b\u0107 mo\u017ce pozwoli\u0107 na d\u0142u\u017csze oczekiwanie, ale nie tworzy dodatkowych proces\u00f3w roboczych ani nie przyspiesza dzia\u0142ania bazy danych. <\/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\">Ograniczenia wydajno\u015bci i kolejne kroki<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Je\u015bli bud\u017cet pami\u0119ci RAM nie wystarcza na szacowane zapotrzebowanie, wy\u017csze ustawienie dla <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> Nie nale\u017cy jednak zapomina\u0107 o konflikcie cel\u00f3w: dodatkowe procesy r\u00f3wnie\u017c wymagaj\u0105 pami\u0119ci. Zamiast tego sprawd\u017a, czy mo\u017cna zmniejszy\u0107 liczb\u0119 \u017c\u0105da\u0144 PHP lub czas zaj\u0119to\u015bci ich proces\u00f3w roboczych. To, kt\u00f3re rozwi\u0105zanie jest w\u0142a\u015bciwe, zale\u017cy od tego, gdzie powstaje zaobserwowane obci\u0105\u017cenie.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Lepiej wykorzystywana pami\u0119\u0107 podr\u0119czna mo\u017ce przejmowa\u0107 powtarzaj\u0105ce si\u0119 wywo\u0142ania, podczas gdy szybsze wykonywanie kodu PHP i dost\u0119p do bazy danych pozwalaj\u0105 na wcze\u015bniejsze zwolnienie proces\u00f3w roboczych. Odpowiednie zadania wykonywane w tle mo\u017cna przenie\u015b\u0107 poza bezpo\u015bredni\u0105 \u015bcie\u017ck\u0119 \u017c\u0105dania; jednak r\u00f3wnie\u017c te zadania wymagaj\u0105 w\u0142asnych zasob\u00f3w. Ograniczenie obci\u0105\u017cenia chroni backend w okresach szczytowego obci\u0105\u017cenia, ale mo\u017ce r\u00f3wnie\u017c powodowa\u0107, \u017ce \u017c\u0105dania b\u0119d\u0105 musia\u0142y czeka\u0107 lub zostan\u0105 odrzucone.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Dodatkowa pami\u0119\u0107 RAM mo\u017ce umo\u017cliwi\u0107 zwi\u0119kszenie liczby proces\u00f3w roboczych, je\u015bli pami\u0119\u0107 faktycznie stanowi decyduj\u0105ce ograniczenie. Je\u015bli procesor, baza danych lub us\u0142uga zewn\u0119trzna s\u0105 ju\u017c w pe\u0142ni obci\u0105\u017cone, nale\u017cy r\u00f3wnie\u017c uwzgl\u0119dni\u0107 ich wydajno\u015b\u0107. Dlatego sama wi\u0119ksza ilo\u015b\u0107 pami\u0119ci nie gwarantuje ani kr\u00f3tszych czas\u00f3w odpowiedzi, ani wi\u0119kszej przepustowo\u015bci.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Je\u015bli zapotrzebowanie na pami\u0119\u0107 poszczeg\u00f3lnych proces\u00f3w roboczych wzro\u015bnie w trakcie ich cyklu \u017cycia, to <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> zadba\u0107 o ich regularn\u0105 wymian\u0119. Mo\u017ce to pom\u00f3c w radzeniu sobie z wyciekami pami\u0119ci w bibliotekach stron trzecich, ale nie eliminuje ich przyczyny. Po wprowadzeniu zmiany nadal obserwuj pami\u0119\u0107 puli i zachowanie zapyta\u0144, zamiast traktowa\u0107 mechanizm ponownego uruchamiania jako substytut wyszukiwania b\u0142\u0119d\u00f3w. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">W celu podj\u0119cia decyzji o szerszym zakresie architektury, <a href=\"https:\/\/webhosting.de\/pl\/nginx-unit-alternatywa-dla-php-fpm\/\">Por\u00f3wnanie NGINX Unit i PHP-FPM<\/a> Kontekst: Modu\u0142 NGINX Unit zosta\u0142 zarchiwizowany i nie jest ju\u017c rozwijany. Niezale\u017cnie od wybranej architektury, zmiany nale\u017cy wprowadza\u0107 na podstawie <strong style=\"font-weight:700;color:inherit\">szeregi czasowe<\/strong> Sprawd\u017a: przy podobnej liczbie zapyta\u0144 por\u00f3wnaj kolejk\u0119, obci\u0105\u017cenie procesor\u00f3w, pami\u0119\u0107 oraz czasy odpowiedzi. W ten spos\u00f3b mo\u017cna ustali\u0107, czy dostosowanie faktycznie wyeliminowa\u0142o w\u0105skie gard\u0142o, czy te\u017c jedynie je przenios\u0142o. <\/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\">\u0179r\u00f3d\u0142a i aktualny stan wiedzy<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Stan bada\u0144: <time datetime=\"2026-11-04\">2026-11-04<\/time><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Stan bada\u0144: 4 listopada 2026 r. Nale\u017cy sprawdzi\u0107 dost\u0119pno\u015b\u0107 modu\u0142u Status-Listener, danych procesowych i ustawie\u0144 puli dla u\u017cywanej wersji PHP i systemu Linux, a tak\u017ce \u015brodowiska hostingowego.<\/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>Ile proces\u00f3w roboczych PHP-FPM zmie\u015bci si\u0119 w pami\u0119ci RAM i ile z nich jest potrzebnych przy rzeczywistym nat\u0119\u017ceniu ruchu? Artyku\u0142 wyja\u015bnia, na czym polega pomiar PSS, jak wygl\u0105da alokacja proces\u00f3w roboczych oraz jakie s\u0105 ograniczenia parametru 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 jako alternatywa dla PHP-FPM? Architektura, zagro\u017cenia i przyk\u0142ady zastosowa\u0144","excerpt":"NGINX Unit by\u0142 pod wzgl\u0119dem technicznym czym\u015b wi\u0119cej ni\u017c tylko PHP-FPM: ten serwer aplikacji potrafi\u0142 \u0142\u0105czy\u0107 protok\u00f3\u0142 HTTP, routing, pliki statyczne i wykonywanie kodu PHP. Jednak dla nowych platform hostingowych PHP Unit nie stanowi powszechnej alternatywy, poniewa\u017c projekt ten zosta\u0142 zarchiwizowany w pa\u017adzierniku 2025 roku i nie jest ju\u017c rozwijany. Dlatego te\u017c NGINX z PHP-FPM pozostaje dla nowych system\u00f3w bardziej zrozumia\u0142ym wyborem standardowym. Unit jest przede wszystkim tematem dotycz\u0105cym udokumentowanych istniej\u0105cych instalacji, analiz ryzyka i planowanych migracji. Przejd\u017a bezpo\u015brednio do sekcji: Status archiwalny i jasna, zwi\u0119z\u0142a ocena. NGINX, PHP-FPM i Unit \u2013 r\u00f3\u017cnice w modu\u0142ach PHP, wersjach i ograniczeniach konfiguracyjnych. Konfiguracja routingu PHP i kontrolera frontowego. Por\u00f3wnanie modeli proces\u00f3w i bud\u017cetu pami\u0119ci RAM. Ocena modeli operacyjnych hostingu PHP. Bezpieczne u\u017cytkowanie Unit w istniej\u0105cych instalacjach. Limity czasu, logi i zawieszone procesy Wyb\u00f3r mi\u0119dzy nowymi a starymi systemami Status archiwalny i jasna, zwi\u0119z\u0142a ocena Na dzie\u0144 30 wrze\u015bnia 2026 r. jasna ocena brzmi: NGINX Unit m\u00f3g\u0142 bezpo\u015brednio uruchamia\u0107 aplikacje PHP, przyjmuj\u0105c przy tym po\u0142\u0105czenia HTTP, ko\u0144cz\u0105c po\u0142\u0105czenia TLS, dostarczaj\u0105c pliki statyczne oraz kieruj\u0105c \u017c\u0105dania. Tym samym zakres jego funkcjonalno\u015bci znacznie wykracza\u0142 poza mo\u017cliwo\u015bci PHP-FPM. Jednak w przypadku nowych, produkcyjnych platform hostingu PHP Unit nie jest og\u00f3lnie zalecany, poniewa\u017c oficjalny projekt zosta\u0142 zarchiwizowany w pa\u017adzierniku 2025 r. i nie jest ju\u017c rozwijany. Nie oznacza to, \u017ce istniej\u0105ca instalacja Unit natychmiast przesta\u0142aby dzia\u0142a\u0107. Mo\u017ce ona nadal obs\u0142ugiwa\u0107 aplikacj\u0119, o ile jej zale\u017cno\u015bci, \u015brodki bezpiecze\u0144stwa oraz \u015bcie\u017cka migracji s\u0105 udokumentowane. Nowa inwestycja musi jednak zosta\u0107 oceniona inaczej: bez ci\u0105g\u0142ej konserwacji projektu wzrasta ryzyko zwi\u0105zane z lukami w zabezpieczeniach, dost\u0119pno\u015bci\u0105 pakiet\u00f3w, nowymi wersjami system\u00f3w operacyjnych oraz przysz\u0142\u0105 kompatybilno\u015bci\u0105 z PHP. W przypadku informacji o wersji wa\u017cne jest wyra\u017ane rozr\u00f3\u017cnienie. W nadal dost\u0119pnej dokumentacji instalacyjnej cz\u0119sto pojawia si\u0119 wersja Unit 1.34.2, podczas gdy opublikowano stabiln\u0105 wersj\u0119 1.35.0. Wersja ta potwierdza mi\u0119dzy innymi zgodno\u015b\u0107 z PHP 8.5; nie oznacza to jednak dalszej obs\u0142ugi. Ga\u0142\u0105\u017a rozwojowa \u201emaster\u201d nie jest miarodajnym produktem ze wzgl\u0119du na sw\u00f3j status archiwalny."},"I2":{"id":"I2","post_id":21283,"url":"https:\/\/webhosting.de\/linux-hugepages-hosting-mariadb-redis-php-fpm-optimierung-nebula\/","title":"HugePages w systemie Linux w us\u0142ugach hostingowych: przyspieszenie dzia\u0142ania MariaDB, Redis i PHP-FPM","excerpt":"Pokazuj\u0119 konkretnie, w jaki spos\u00f3b strony ogromne w systemie Linux przyspieszaj\u0105 dzia\u0142anie MariaDB, Redis i PHP-FPM w \u015brodowisku hostingowym, gdzie je spowalniaj\u0105 oraz jak je precyzyjnie konfigurowa\u0107. W ten spos\u00f3b zmniejszam op\u00f3\u017anienia, ograniczam liczb\u0119 nieudanych odwo\u0142a\u0144 do TLB i zapewniam przewidywalno\u015b\u0107 zarz\u0105dzania pami\u0119ci\u0105. Kluczowe kwestie Poni\u017csze punkty podsumowuj\u0105 najwa\u017cniejsze czynno\u015bci i ich skutki. \u015awiadomy wyb\u00f3r trybu THP: \u201emadvise\u201c dla szerokiego zakresu obci\u0105\u017ce\u0144, \u201enever\u201c dla wra\u017cliwych us\u0142ug, takich jak Redis. Zaplanuj statyczne strony ogromne (HugePages) dla du\u017cych pul buforowych MariaDB, aby zmniejszy\u0107 op\u00f3\u017anienia i liczb\u0119 nieudanych odwo\u0142a\u0144 do TLB. Chro\u0144 Redis przed szczytami op\u00f3\u017anie\u0144: wy\u0142\u0105cz THP i ogranicz koszty tworzenia fork\u00f3w. PHP-FPM odnosi po\u015brednie korzy\u015bci dzi\u0119ki mniejszym obci\u0105\u017ceniom j\u0105dra i szybszym backendom. Przeprowad\u017a testy por\u00f3wnawcze i monitorowanie przed uruchomieniem produkcyjnym, aby zmierzy\u0107 efekty. Kr\u00f3tkie wyja\u015bnienie HugePages i THP Korzystam z HugePages, aby w\u0142\u0105czy\u0107 wi\u0119ksze strony pami\u0119ci i w ten spos\u00f3b zmniejszy\u0107 liczb\u0119 stron do zarz\u0105dzania. Klasyczne strony maj\u0105 rozmiar 4 KB, podczas gdy du\u017ce strony maj\u0105 zazwyczaj 2 MB. Dzi\u0119ki temu znacznie zmniejsza si\u0119 liczba nieudanych odwo\u0142a\u0144 do TLB, procesor po\u015bwi\u0119ca mniej czasu na zarz\u0105dzanie pami\u0119ci\u0105, a us\u0142ugi intensywnie korzystaj\u0105ce z pami\u0119ci RAM reaguj\u0105 szybciej. Transparent Huge Pages (THP) pr\u00f3buje to zrobi\u0107 automatycznie i mo\u017ce dzia\u0142a\u0107 bez konieczno\u015bci dostosowywania aplikacji. Raporty z praktyki cz\u0119sto wskazuj\u0105 na operacje szybsze o 20\u201340 razy w trybie %, o ile obci\u0105\u017cenia i ustawienia s\u0105 odpowiednio dopasowane. Prawid\u0142owy wyb\u00f3r i testowanie tryb\u00f3w THP Wyra\u017anie rozr\u00f3\u017cniam tryby \u201ealways\u201c, \u201emadvise\u201c i \u201enever\u201c, poniewa\u017c maj\u0105 one r\u00f3\u017cny wp\u0142yw na obci\u0105\u017cenia. Tryb \u201ealways\u201c mo\u017ce zaskakuj\u0105co mocno zajmowa\u0107 pami\u0119\u0107 RAM i generowa\u0107 nak\u0142ad pracy zwi\u0105zany z kopiowaniem, gdy us\u0142ugi tworz\u0105 procesy potomne. Tryb \u201emadvise\u201c pozwala na kontrol\u0119: tylko pami\u0119\u0107, kt\u00f3r\u0105 aplikacja wyra\u017anie zaznaczy, wykorzystuje du\u017ce strony. Tryb \u201enever\u201c zapewnia maksymaln\u0105 przewidywalno\u015b\u0107, zw\u0142aszcza w przypadku us\u0142ug intensywnie tworz\u0105cych procesy potomne, takich jak Redis. Kto chce zag\u0142\u0119bi\u0107 si\u0119 w temat, znajdzie tutaj informacje na temat szans i pu\u0142apek: THP: przyspieszenie czy problem. Testuj\u0119 ka\u017cdy tryb pod rzeczywistym obci\u0105\u017ceniem, mierz\u0119 op\u00f3\u017anienie, czas procesora i RSS, a nast\u0119pnie podejmuj\u0119 decyzj\u0119 w oparciu o fakty. Praktyczna konfiguracja na ho\u015bcie Zanim prze\u0142\u0105cz\u0119 us\u0142ugi, dbam o powtarzalne ustawienia domy\u015blne hosta i bezpieczny plan awaryjny. Ukierunkowane ustawienie THP (parametry rozruchowe lub systemd) Podczas rozruchu j\u0105dra: w GRUB \u201etransparent_hu"},"I3":{"id":"I3","post_id":20986,"url":"https:\/\/webhosting.de\/php-fpm-slowlog-richtig-auswerten-performance-optimierung-debugging-analyse\/","title":"Jak prawid\u0142owo analizowa\u0107 plik slowlog PHP-FPM: skuteczne wykrywanie w\u0105skich garde\u0142 wydajno\u015bci","excerpt":"Poka\u017c\u0119 Ci, jak skutecznie analizowa\u0107 plik slowlog PHP-FPM, prawid\u0142owo interpretowa\u0107 \u015blady wywo\u0142ania (backtraces) i na tej podstawie wywnioskowa\u0107 konkretne kroki zmierzaj\u0105ce do zmniejszenia op\u00f3\u017anie\u0144. W ten spos\u00f3b niezawodnie zidentyfikujesz w\u0105skie gard\u0142a wydajno\u015bci, ustalisz priorytety dzia\u0142a\u0144 i sprawisz, \u017ce czas \u0142adowania stron b\u0119dzie dla u\u017cytkownik\u00f3w zauwa\u017calnie kr\u00f3tszy. Kluczowe punkty: Analiza \u015bladu wykonania: ramka #0 wskazuje aktualne \u017ar\u00f3d\u0142o spowolnienia. Wyb\u00f3r limitu czasu: zacznij od wysokiej warto\u015bci, a nast\u0119pnie stopniowo j\u0105 obni\u017caj. Korelacja z logiem dost\u0119pu: pewna identyfikacja powolnych adres\u00f3w URL. Zliczanie wzorc\u00f3w: nadaj priorytet powtarzaj\u0105cym si\u0119 funkcjom. Wyprowadzanie poprawek kodu: ukierunkowane dzia\u0142ania w zakresie baz danych, interfejs\u00f3w API, p\u0119tli i wtyczek. Czym jest slowlog PHP-FPM? Slowlog zapisuje \u015blad wykonania (backtrace) d\u0142ugich \u017c\u0105da\u0144 w pliku dziennika, rejestruj\u0105c w ten spos\u00f3b aktualny punkt wykonania bez przerywania \u017c\u0105dania. Dzi\u0119ki temu od razu rozpoznaj\u0119, kt\u00f3ry skrypt, kt\u00f3ry adres URL i kt\u00f3ra funkcja blokuje przep\u0142yw. Wpisy zawieraj\u0105 sygnatur\u0119 czasow\u0105, pul\u0119, nazw\u0119 pliku skryptu, URI \u017c\u0105dania oraz \u0142a\u0144cuch wywo\u0142a\u0144 funkcji. Tym samym Slowlog wyra\u017anie r\u00f3\u017cni si\u0119 od klasycznych dziennik\u00f3w b\u0142\u0119d\u00f3w, poniewa\u017c dokumentuje wydajno\u015b\u0107, a nie b\u0142\u0119dy. W przypadku stron o du\u017cym obci\u0105\u017ceniu, takich jak zaplecze WordPressa, dostarcza on szybko przydatnych wskaz\u00f3wek dotycz\u0105cych kosztownych zapyta\u0144, nadmiernego renderowania lub blokuj\u0105cych operacji wej\u015bcia\/wyj\u015bcia. Kto rozumie te migawki, mo\u017ce bardzo szybko zaw\u0119zi\u0107 g\u0142\u00f3wn\u0105 przyczyn\u0119 i zaplanowa\u0107 dzia\u0142ania. Tak dzia\u0142a slowlog na co dzie\u0144 Po aktywacji, gdy przekroczony zostanie zdefiniowany pr\u00f3g, PHP-FPM zapisuje w logu migawk\u0119 stosu, podczas gdy \u017c\u0105danie jest nadal przetwarzane. Ka\u017cdy wpis zaczyna si\u0119 zazwyczaj od \u201e#0\u201c, czyli od miejsca, w kt\u00f3rym aktualnie dochodzi do straty czasu. Pomi\u0119dzy blokami cz\u0119sto dostrzegam puste wiersze, co u\u0142atwia rozdzielanie zdarze\u0144. Metoda ta dostarcza pr\u00f3bki zamiast pe\u0142nych profili, ale za to zapewnia trafne wskaz\u00f3wki dotycz\u0105ce rzeczywistych czynnik\u00f3w spowalniaj\u0105cych, takich jak rozbudowane \u015bcie\u017cki szablon\u00f3w, osierocone haki czy powolne wywo\u0142ania sieciowe. W fazach o du\u017cym nat\u0119\u017ceniu ruchu \u0142\u0105cz\u0119 te wskaz\u00f3wki ze szczytami obci\u0105\u017cenia, co pozwala mi na przejrzyst\u0105 klasyfikacj\u0119 fragment\u00f3w kodu. Gdy dostrzegam powtarzaj\u0105ce si\u0119 wzorce, dostosowuj\u0119 na przyk\u0142ad warto\u015b\u0107 pm.max_children, korzystaj\u0105c z informacji zawartych w artykule \u201eJak prawid\u0142owo ustawi\u0107 pm.max_children\u201d. 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":"Planowanie wydajno\u015bci PHP-FPM: obliczanie liczby proces\u00f3w roboczych, pami\u0119ci RAM i liczby jednoczesnych \u017c\u0105da\u0144","slug":"php-fpm-planowanie-wydajnosci-worker-pamiec-ram-zadania","excerpt":"Ile proces\u00f3w roboczych PHP-FPM zmie\u015bci si\u0119 w pami\u0119ci RAM i ile z nich jest potrzebnych przy rzeczywistym nat\u0119\u017ceniu ruchu? Artyku\u0142 wyja\u015bnia, na czym polega pomiar PSS, jak wygl\u0105da alokacja proces\u00f3w roboczych oraz jakie s\u0105 ograniczenia parametru pm.max_children.","status":"draft","featured_media":22160},"verify":{"content_md5":"b99a6321bcea002fa2d3704eb8c99934","title":"Planowanie wydajno\u015bci PHP-FPM: obliczanie liczby proces\u00f3w roboczych, pami\u0119ci RAM i liczby jednoczesnych \u017c\u0105da\u0144","slug":"php-fpm-planowanie-wydajnosci-worker-pamiec-ram-zadania","excerpt":"Ile proces\u00f3w roboczych PHP-FPM zmie\u015bci si\u0119 w pami\u0119ci RAM i ile z nich jest potrzebnych przy rzeczywistym nat\u0119\u017ceniu ruchu? Artyku\u0142 wyja\u015bnia, na czym polega pomiar PSS, jak wygl\u0105da alokacja proces\u00f3w roboczych oraz jakie s\u0105 ograniczenia parametru 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: Konfiguracja \u2013 Podr\u0119cznik"},"S2":{"id":"S2","url":"https:\/\/www.php.net\/fpm.status.php?utm_source=openai","title":"PHP: Strona stanu \u2014 Podr\u0119cznik"},"S3":{"id":"S3","url":"https:\/\/docs.kernel.org\/7.0\/filesystems\/proc.html?utm_source=openai","title":"System plik\u00f3w \/proc \u2014 Dokumentacja j\u0105dra systemu Linux"},"S4":{"id":"S4","url":"https:\/\/www.php.net\/manual\/de\/install.fpm.php?utm_source=openai","title":"PHP: FastCGI Process Manager (FPM) \u2013 Podr\u0119cznik"},"S5":{"id":"S5","url":"https:\/\/nginx.org\/en\/docs\/http\/ngx_http_fastcgi_module.html?utm_source=openai","title":"Modu\u0142 ngx_http_fastcgi_module"},"S6":{"id":"S6","url":"https:\/\/www.kernel.org\/doc\/html\/v6.12\/filesystems\/proc.html?utm_source=openai","title":"System plik\u00f3w \/proc \u2014 Dokumentacja j\u0105dra systemu Linux"}},"_wh_make_usage":{"research":{"input_tokens":13377,"output_tokens":2589,"response_id":"resp_0de9d77ca410f7ba016aeb3449d7d087d2abbb39037cde8c14","model":"gpt-6.1-terra","search_calls":1},"plan_65cd50b20cbd876bb4fd58c3bdf44934":{"input_tokens":5676,"output_tokens":1152,"response_id":"resp_07070f8cb815141f016aeb3472b32c87d28f5447aaaebcbf59","model":"gpt-6.1-terra","search_calls":0},"part1_d361ac731b1801282b1dfad518a9980e":{"input_tokens":7993,"output_tokens":1789,"response_id":"resp_05469b769500b5be016aeb3483661087d28a9e433d376e7e29","model":"gpt-6.1-terra","search_calls":0},"part2_eda54726519da48991078aa1ed3291f2":{"input_tokens":8043,"output_tokens":2180,"response_id":"resp_0f48008f6008c31e016aeb349bdbb487d28f13358a9673f916","model":"gpt-6.1-terra","search_calls":0},"part3_77c2cc14796e37c2587bca66f0322bfc":{"input_tokens":8071,"output_tokens":1773,"response_id":"resp_09acc0aa3cebdcc4016aeb34be1b8887d288ea1ddad2a21c12","model":"gpt-6.1-terra","search_calls":0},"package_1aaa04ff0a7f94917f643c91e840ffc1":{"input_tokens":15319,"output_tokens":1323,"response_id":"resp_0c56e246dfc75fe1016aeb34d8dda487d2a1187e71bf7bfad0","model":"gpt-6.1-terra","search_calls":0},"review_9466d09b5abf3fe9c0486a57e66f25b6":{"input_tokens":33769,"output_tokens":733,"response_id":"resp_08ce48482b4919d7016aeb34ee0e1087d28a7b5c4d77efb3a4","model":"gpt-6.1-sol","search_calls":2},"image_hero":{"input_tokens":171,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0},"image_detail1":{"input_tokens":159,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0},"image_detail2":{"input_tokens":162,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0}},"_wh_make_last_error":"","_wh_make_write_intent":{"before":{"content_md5":"b6bec4627bf71ed7873cb4f75841c32d","title":"Planowanie wydajno\u015bci PHP-FPM: obliczanie liczby proces\u00f3w roboczych, pami\u0119ci RAM i liczby jednoczesnych \u017c\u0105da\u0144","slug":"php-fpm-planowanie-wydajnosci-worker-pamiec-ram-zadania","excerpt":"Ile proces\u00f3w roboczych PHP-FPM zmie\u015bci si\u0119 w pami\u0119ci RAM i ile z nich jest potrzebnych przy rzeczywistym nat\u0119\u017ceniu ruchu? Artyku\u0142 wyja\u015bnia, na czym polega pomiar PSS, jak wygl\u0105da alokacja proces\u00f3w roboczych oraz jakie s\u0105 ograniczenia parametru pm.max_children.","status":"draft","featured_media":0},"expected":{"content_md5":"b99a6321bcea002fa2d3704eb8c99934","title":"Planowanie wydajno\u015bci PHP-FPM: obliczanie liczby proces\u00f3w roboczych, pami\u0119ci RAM i liczby jednoczesnych \u017c\u0105da\u0144","slug":"php-fpm-planowanie-wydajnosci-worker-pamiec-ram-zadania","excerpt":"Ile proces\u00f3w roboczych PHP-FPM zmie\u015bci si\u0119 w pami\u0119ci RAM i ile z nich jest potrzebnych przy rzeczywistym nat\u0119\u017ceniu ruchu? Artyku\u0142 wyja\u015bnia, na czym polega pomiar PSS, jak wygl\u0105da alokacja proces\u00f3w roboczych oraz jakie s\u0105 ograniczenia parametru 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":"Planowanie wydajno\u015bci PHP-FPM: obliczanie liczby proces\u00f3w roboczych, pami\u0119ci RAM i liczby jednoczesnych \u017c\u0105da\u0144","slug":"php-fpm-planowanie-wydajnosci-worker-pamiec-ram-zadania","excerpt":"Ile proces\u00f3w roboczych PHP-FPM zmie\u015bci si\u0119 w pami\u0119ci RAM i ile z nich jest potrzebnych przy rzeczywistym nat\u0119\u017ceniu ruchu? Artyku\u0142 wyja\u015bnia, na czym polega pomiar PSS, jak wygl\u0105da alokacja proces\u00f3w roboczych oraz jakie s\u0105 ograniczenia parametru pm.max_children.","seo":{"title":"Planowanie wydajno\u015bci PHP-FPM: obliczanie liczby proces\u00f3w roboczych i pami\u0119ci RAM","description":"Planowanie proces\u00f3w PHP-FPM na podstawie bud\u017cetu pami\u0119ci RAM i obci\u0105\u017cenia \u017c\u0105daniami: w ten spos\u00f3b mo\u017cna rozs\u0105dnie ograniczy\u0107 i monitorowa\u0107 warto\u015b\u0107 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\/pl\/wp-json\/wp\/v2\/posts\/22158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/comments?post=22158"}],"version-history":[{"count":2,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/22158\/revisions"}],"predecessor-version":[{"id":22163,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/22158\/revisions\/22163"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/22160"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=22158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=22158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=22158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}