{"id":18921,"date":"2026-04-11T08:37:18","date_gmt":"2026-04-11T06:37:18","guid":{"rendered":"https:\/\/webhosting.de\/php-request-queueing-max-children-verarbeitungslimits-performance\/"},"modified":"2026-04-11T08:37:18","modified_gmt":"2026-04-11T06:37:18","slug":"kolejkowanie-zadan-php-maksymalne-przetwarzanie-dzieci-limity-wydajnosci","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/php-request-queueing-max-children-verarbeitungslimits-performance\/","title":{"rendered":"Kolejkowanie \u017c\u0105da\u0144 PHP i limity przetwarzania: optymalna konfiguracja dla stabilnych serwer\u00f3w"},"content":{"rendered":"<p>Kolejkowanie \u017c\u0105da\u0144 PHP ogranicza liczb\u0119 \u017c\u0105da\u0144 przetwarzanych przez serwer w tym samym czasie, a tym samym okre\u015bla czas odpowiedzi, liczb\u0119 b\u0142\u0119d\u00f3w i wra\u017cenia u\u017cytkownika. Poka\u017c\u0119 ci jak <strong>Limity przetwarzania<\/strong> i wyeliminowa\u0107 w\u0105skie gard\u0142a oraz osi\u0105gn\u0105\u0107 sp\u00f3jne dostawy dzi\u0119ki zharmonizowanym parametrom.<\/p>\n\n<h2>Punkty centralne<\/h2>\n<p>Aby\u015b m\u00f3g\u0142 zacz\u0105\u0107 od razu, podsumuj\u0119 najwa\u017cniejsze \u015bruby regulacyjne dla <strong>PHP-FPM<\/strong> razem.<\/p>\n<ul>\n  <li><strong>pm.max_children<\/strong>Oblicz g\u00f3rny limit jednoczesnych proces\u00f3w PHP, aby dopasowa\u0107 go do pami\u0119ci RAM.<\/li>\n  <li><strong>listen.backlog<\/strong>Maksymalizacja kr\u00f3tkoterminowego buforowania pr\u00f3b po\u0142\u0105cze\u0144 podczas szczytowego obci\u0105\u017cenia.<\/li>\n  <li><strong>pm.max_requests<\/strong>Regularnie usuwaj procesy, aby unikn\u0105\u0107 wyciek\u00f3w pami\u0119ci i rozrostu.<\/li>\n  <li><strong>Limity czasu<\/strong>: konsekwentne ustawianie request_terminate_timeout, max_execution_time i limit\u00f3w czasu serwera WWW.<\/li>\n  <li><strong>Metryki<\/strong>osi\u0105gni\u0119to maksymaln\u0105 liczb\u0119 dzieci, sprawdzaj kolejk\u0119 nas\u0142uchiwania i slowlogi w spos\u00f3b ci\u0105g\u0142y.<\/li>\n<\/ul>\n<p>Skupiam si\u0119 na jasnych, kluczowych liczbach i wymiernych efektach, tak aby ka\u017cde dostosowanie do <strong>Ograniczenia<\/strong> pozostaje identyfikowalny. W przypadku ka\u017cdej zmiany monitoruj\u0119 dzienniki i czasy odpowiedzi przed zaplanowaniem kolejnego kroku i stopniowym zwi\u0119kszaniem lub zmniejszaniem warto\u015bci. W ten spos\u00f3b zapobiegam efektom ubocznym, takim jak zamiana pami\u0119ci, kt\u00f3ra mo\u017ce <strong>Kolejka<\/strong> znacznie d\u0142u\u017cej. Dzi\u0119ki takiemu podej\u015bciu kontroluj\u0119 szczyty obci\u0105\u017cenia i utrzymuj\u0119 stabilne czasy reakcji. Celem jest osi\u0105gni\u0119cie zr\u00f3wnowa\u017conego wykorzystania mocy obliczeniowej, kt\u00f3re <strong>Zasoby<\/strong> wydajnie bez przeci\u0105\u017cania hosta.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/serveroptimierung-php-req-queue-8453.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Jak dzia\u0142a kolejkowanie \u017c\u0105da\u0144 PHP w PHP-FPM<\/h2>\n<p>Ka\u017cde przychodz\u0105ce \u017c\u0105danie HTTP wymaga w\u0142asnego <strong>Pracownik<\/strong>, a pracownik obs\u0142uguje tylko jedno \u017c\u0105danie na raz. Je\u015bli wszystkie procesy s\u0105 zaj\u0119te, dalsze po\u0142\u0105czenia ko\u0144cz\u0105 si\u0119 w module <strong>Kolejka<\/strong> i czeka\u0107, a\u017c proces stanie si\u0119 wolny. Je\u015bli kolejka si\u0119 rozrasta, czasy odpowiedzi rosn\u0105, a b\u0142\u0119dy takie jak 502\/504 pojawiaj\u0105 si\u0119 cz\u0119\u015bciej. Dlatego zwracam uwag\u0119 na rozs\u0105dny stosunek liczby proces\u00f3w do dost\u0119pnej pami\u0119ci, zamiast \u015blepo skupia\u0107 si\u0119 na maksymalnej r\u00f3wnoleg\u0142o\u015bci. W ten spos\u00f3b osi\u0105gam sta\u0142y wsp\u00f3\u0142czynnik przepustowo\u015bci bez <strong>RAM<\/strong> lub od\u0142\u0105czenie procesora.<\/p>\n\n<h2>Czysty wyb\u00f3r tryb\u00f3w mened\u017cera proces\u00f3w<\/h2>\n<p>Opr\u00f3cz warto\u015bci granicznych <strong>tryb pm<\/strong> responsywno\u015b\u0107 i zu\u017cycie zasob\u00f3w:<\/p>\n<ul>\n  <li><strong>pm = dynamiczny<\/strong>Definiuj\u0119 start_servers, min_spare_servers i max_spare_servers. Ten tryb jest moim standardem dla zmiennych obci\u0105\u017ce\u0144, poniewa\u017c szybko reaguje na wzrosty i utrzymuje ciep\u0142e procesy w gotowo\u015bci.<\/li>\n  <li><strong>pm = na \u017c\u0105danie<\/strong>Procesy s\u0105 tworzone tylko wtedy, gdy jest to wymagane i s\u0105 ko\u0144czone po przekroczeniu limitu czasu process_idle_timeout. Oszcz\u0119dza to pami\u0119\u0107 RAM w przypadku rzadkich dost\u0119p\u00f3w (administrator, staging, punkty ko\u0144cowe cron), ale mo\u017ce prowadzi\u0107 do utraty pami\u0119ci RAM w przypadku nag\u0142ych szczyt\u00f3w. <strong>Rozruchy na zimno<\/strong> i wi\u0119ksze op\u00f3\u017anienia. Dlatego u\u017cywam go wybi\u00f3rczo i z du\u017cym zapasem.<\/li>\n  <li><strong>pm = statyczny<\/strong>Sta\u0142a liczba proces\u00f3w. Idealne rozwi\u0105zanie, je\u015bli mam <strong>twardy g\u00f3rny limit<\/strong> i szczeg\u00f3lnie przewidywalne op\u00f3\u017anienia (np. proxy L7 przed kilkoma, ale krytycznymi punktami ko\u0144cowymi). Zapotrzebowanie na pami\u0119\u0107 RAM jest wyra\u017anie obliczalne, ale nieu\u017cywane procesy zajmuj\u0105 pami\u0119\u0107.<\/li>\n<\/ul>\n<p>Decyduj\u0119, kt\u00f3ry tryb pasuje do profilu ka\u017cdej puli. Zwykle u\u017cywam trybu dynamicznego dla frontend\u00f3w o zmiennym obci\u0105\u017ceniu, trybu na \u017c\u0105danie dla pul narz\u0119dziowych i trybu statycznego dla dedykowanych us\u0142ug o krytycznym op\u00f3\u017anieniu.<\/p>\n\n<h2>Prawid\u0142owe okre\u015blenie pm.max_children<\/h2>\n<p>Najwa\u017cniejsz\u0105 d\u017awigni\u0105 jest <strong>pm.max_children<\/strong>, poniewa\u017c warto\u015b\u0107 ta okre\u015bla, ile \u017c\u0105da\u0144 mo\u017ce by\u0107 uruchomionych jednocze\u015bnie. Obliczam rozmiar pocz\u0105tkowy, korzystaj\u0105c z zasady kciuka: (swobodnie dost\u0119pna pami\u0119\u0107 RAM - 2 GB rezerwy) podzielona przez \u015bredni\u0105 ilo\u015b\u0107 pami\u0119ci na proces PHP. Jako przybli\u017cone za\u0142o\u017cenie, u\u017cywam 40-80 MB na proces i pocz\u0105tkowo zaczynam od 200-300 proces\u00f3w na ho\u015bcie 32 GB. Pod obci\u0105\u017ceniem na \u017cywo stopniowo zwi\u0119kszam lub zmniejszam i sprawdzam, czy czas oczekiwania <strong>Kolejka<\/strong> spada, a poziom b\u0142\u0119du maleje. Wi\u0119cej informacji na temat warto\u015bci pocz\u0105tkowych i granicznych mo\u017cna znale\u017a\u0107 na stronie <a href=\"https:\/\/webhosting.de\/pl\/php-fpm-zarzadzanie-procesami-pm-max-children-optymalizacja-rdzenia\/\">Optymalizacja pm.max_children<\/a>.<\/p>\n\n<h2>Koordynacja warto\u015bci pocz\u0105tkowych, zapasowych i zaleg\u0142o\u015bci<\/h2>\n<p>Ustawi\u0142em <strong>pm.start_servers<\/strong> do oko\u0142o 15-30 procent pm.max_children, tak aby wystarczaj\u0105ca liczba proces\u00f3w by\u0142a dost\u0119pna na starcie i nie by\u0142o zimnych start\u00f3w. Za pomoc\u0105 pm.min_spare_servers i pm.max_spare_servers definiuj\u0119 rozs\u0105dne okno dla wolnych proces\u00f3w, aby nowe \u017c\u0105dania nie czeka\u0142y, a jednocze\u015bnie niepotrzebny czas bezczynno\u015bci nie wi\u0105za\u0142 pami\u0119ci. Listen.backlog jest szczeg\u00f3lnie wa\u017cny: Ten bufor j\u0105dra kr\u00f3tko przechowuje dodatkowe pr\u00f3by po\u0142\u0105cze\u0144, gdy wszyscy pracownicy s\u0105 zaj\u0119ci. W przypadku szczyt\u00f3w obci\u0105\u017cenia ustawiam wysokie warto\u015bci (np. 65535), tak aby bufor <strong>kolejka<\/strong> nie zatrzymuje si\u0119 przed pul\u0105 FPM. Bardziej szczeg\u00f3\u0142owe informacje na temat interakcji mi\u0119dzy serwerem WWW, upstream i buforami mo\u017cna znale\u017a\u0107 w przegl\u0105dzie <a href=\"https:\/\/webhosting.de\/pl\/serwer-www-kolejkowanie-opoznienie-obsluga-zadan-kolejka-serwera\/\">Kolejkowanie serwera WWW<\/a>.<\/p>\n\n<h2>Ograniczenie czasu wykonywania \u017c\u0105da\u0144 i recykling proces\u00f3w<\/h2>\n<p>Zapobiegam pe\u0142zaj\u0105cym skokom pami\u0119ci dzi\u0119ki <strong>pm.max_requests<\/strong>, kt\u00f3ry restartuje ka\u017cdy proces po X \u017c\u0105daniach. Nienarzucaj\u0105ce si\u0119 aplikacje cz\u0119sto dzia\u0142aj\u0105 dobrze z 500-800, je\u015bli podejrzewa si\u0119 wycieki pami\u0119ci, zmniejszam do 100-200 i obserwuj\u0119 efekt. Dodatkowo, request_terminate_timeout hermetyzuje warto\u015bci odstaj\u0105ce, ko\u0144cz\u0105c ekstremalnie d\u0142ugo dzia\u0142aj\u0105ce \u017c\u0105dania po ustalonym czasie. Sp\u00f3jno\u015b\u0107 jest wa\u017cna: utrzymuj\u0119 max_execution_time PHP i timeout serwera WWW w tym samym korytarzu, aby jedna warstwa nie ko\u0144czy\u0142a si\u0119 wcze\u015bniej ni\u017c druga. Ta interakcja utrzymuje <strong>Pracownik<\/strong> i chroni basen przed zatorami.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/PHP_Server_Limits_Besprechung_4732.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Widoczno\u015b\u0107 kolejek: Dzienniki i metryki<\/h2>\n<p>Regularnie czytam dzienniki FPM i zwracam uwag\u0119 na <strong>maksymalna liczba osi\u0105gni\u0119tych dzieci<\/strong>, poniewa\u017c ten wpis wskazuje, \u017ce osi\u0105gni\u0119ty zosta\u0142 g\u00f3rny limit proces\u00f3w. Jednocze\u015bnie monitoruj\u0119 kolejk\u0119 nas\u0142uchiwania, kt\u00f3ra ujawnia rosn\u0105ce zaleg\u0142o\u015bci w buforze wej\u015bciowym. W po\u0142\u0105czeniu z request_slowlog_timeout uzyskuj\u0119 \u015blady stosu dla powolnych punkt\u00f3w w kodzie i izoluj\u0119 hamulce bazy danych lub API. Koreluj\u0119 upstream_response_time z dziennik\u00f3w serwera WWW z request_time i kodami statusu, aby zaw\u0119zi\u0107 \u017ar\u00f3d\u0142o d\u0142ugich czas\u00f3w odpowiedzi. To pozwala mi rozpozna\u0107, czy w\u0105skim gard\u0142em jest PHP-FPM, czy te\u017c <strong>Baza danych<\/strong> lub sie\u0107 upstream.<\/p>\n\n<h2>Profile obci\u0105\u017cenia: CPU-bound vs. IO-bound<\/h2>\n<p>W przypadku proces\u00f3w wymagaj\u0105cych du\u017cej mocy obliczeniowej procesora skaluj\u0119 <strong>R\u00f3wnoleg\u0142o\u015b\u0107<\/strong> Jestem ostro\u017cny i skupiam si\u0119 \u015bci\u015ble na liczbie vCPU, poniewa\u017c dodatkowe procesy prawie nie przynosz\u0105 \u017cadnej przepustowo\u015bci. Je\u015bli jest to g\u0142\u00f3wnie obci\u0105\u017cenie IO z dost\u0119pem do bazy danych lub zewn\u0119trznych interfejs\u00f3w API, mog\u0119 zezwoli\u0107 na wi\u0119cej proces\u00f3w, o ile bud\u017cet pami\u0119ci RAM jest wystarczaj\u0105cy. Kasy e-commerce korzystaj\u0105 z d\u0142u\u017cszych limit\u00f3w czasu (np. 300 s) w celu uko\u0144czenia metod p\u0142atno\u015bci bez anulowania. Przechwytuj\u0119 sprzeda\u017c b\u0142yskawiczn\u0105, ustawiaj\u0105c listen.backlog na wysokim poziomie i zwi\u0119kszaj\u0105c wolne okno. Informacje na temat r\u00f3wnowagi mi\u0119dzy liczb\u0105 proces\u00f3w a wydajno\u015bci\u0105 hosta s\u0105 zawarte w przewodniku do <a href=\"https:\/\/webhosting.de\/pl\/php-workers-hosting-bottleneck-guide-balance\/\">PHP-Workers jako w\u0105skie gard\u0142o<\/a>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/php-request-queue-servers-6591.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Przyk\u0142adowe obliczenia i wymiarowanie<\/h2>\n<p>Najpierw obliczam pami\u0119\u0107 przypadaj\u0105c\u0105 na proces, a nast\u0119pnie wyprowadzam sensown\u0105 warto\u015b\u0107 <strong>G\u00f3rny limit<\/strong> wy\u0142\u0105czony. Nast\u0119pnie testuj\u0119 pod rzeczywistym obci\u0105\u017ceniem i obserwuj\u0119, czy kolejka si\u0119 zmniejsza, a przepustowo\u015b\u0107 wzrasta. Konserwatywne warto\u015bci pocz\u0105tkowe zmniejszaj\u0105 ryzyko zamiany i utrzymuj\u0105 r\u00f3wny czas odpowiedzi. Nast\u0119pnie udoskonalam je ma\u0142ymi krokami, aby mie\u0107 pewno\u015b\u0107, \u017ce nie zauwa\u017c\u0119 \u017cadnych efekt\u00f3w ubocznych. Poni\u017csza tabela zawiera wskaz\u00f3wki dotycz\u0105ce warto\u015bci pocz\u0105tkowych i wp\u0142ywu na <strong>Kolejka<\/strong>.<\/p>\n<table>\n  <thead>\n    <tr>\n      <th>Parametry<\/th>\n      <th>Efekt<\/th>\n      <th>Warto\u015b\u0107 pocz\u0105tkowa (przyk\u0142ad)<\/th>\n      <th>Wskaz\u00f3wka<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>pm.max_children<\/td>\n      <td>Maks. jednoczesne <strong>Procesy<\/strong><\/td>\n      <td>200-300 (z 32 GB)<\/td>\n      <td>Por\u00f3wnanie z bud\u017cetem pami\u0119ci RAM i rozmiarem procesu<\/td>\n    <\/tr>\n    <tr>\n      <td>pm.start_servers<\/td>\n      <td>Pocz\u0105tkowa liczba pracownik\u00f3w<\/td>\n      <td>15-30 % od max_children<\/td>\n      <td>Unikaj zimnych rozruch\u00f3w, ale ogranicz do minimum prac\u0119 na biegu ja\u0142owym.<\/td>\n    <\/tr>\n    <tr>\n      <td>pm.min_spare_servers<\/td>\n      <td>Darmowy <strong>Pracownik<\/strong> Minimum<\/td>\n      <td>z. B. 20<\/td>\n      <td>Bezpo\u015brednie w\u0142\u0105czanie nowych \u017c\u0105da\u0144<\/td>\n    <\/tr>\n    <tr>\n      <td>pm.max_spare_servers<\/td>\n      <td>Maksymalny wolny pracownik<\/td>\n      <td>z. B. 40<\/td>\n      <td>Ograniczenie zu\u017cycia pami\u0119ci RAM przez bezczynne procesy<\/td>\n    <\/tr>\n    <tr>\n      <td>listen.backlog<\/td>\n      <td>Bufor j\u0105dra dla pr\u00f3b po\u0142\u0105czenia<\/td>\n      <td>65535<\/td>\n      <td>Amortyzacja obci\u0105\u017ce\u0144 szczytowych i ograniczenie przerw w po\u0142\u0105czeniach<\/td>\n    <\/tr>\n    <tr>\n      <td>pm.max_requests<\/td>\n      <td>Recykling <strong>Interwa\u0142<\/strong><\/td>\n      <td>500-800, z wyciekami 100-200<\/td>\n      <td>Minimalizacja nadmiaru pami\u0119ci i zawiesze\u0144<\/td>\n    <\/tr>\n    <tr>\n      <td>request_terminate_timeout<\/td>\n      <td>Limit twardych \u017c\u0105da\u0144<\/td>\n      <td>300-600 s<\/td>\n      <td>Zgodno\u015b\u0107 z PHP i limitami czasu serwera WWW<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Praktyczne szablony dla pul PHP FPM<\/h2>\n<p>Dla sklepu z wieloma dost\u0119pami do odczytu ustawiam umiarkowane warto\u015bci <strong>Dane dotycz\u0105ce procesu<\/strong> i zwi\u0119kszy\u0107 wolne okno, aby \u017c\u0105dania nie by\u0142y kolejkowane. W przypadku stron tre\u015bci z buforowaniem, znacznie mniejsza liczba pracownik\u00f3w jest cz\u0119sto wystarczaj\u0105ca, o ile NGINX lub Apache skutecznie dostarczaj\u0105 statyczn\u0105 zawarto\u015b\u0107. Oddzielam konfiguracje wielopulowe zgodnie z cz\u0119\u015bciami aplikacji, kt\u00f3re maj\u0105 r\u00f3\u017cne profile pami\u0119ci, aby \u017cadna ci\u0119\u017cka pula nie wypiera\u0142a innych. Definiuj\u0119 oddzielne pule z w\u0142asnymi regu\u0142ami limitu czasu dla pracownik\u00f3w cron lub kolejek. W ten spos\u00f3b utrzymuj\u0119 interaktywno\u015b\u0107 <strong>Ruch uliczny<\/strong> i nie spowalnia \u017cadnych dzia\u0142a\u0144 u\u017cytkownika.<\/p>\n\n<h2>Limity czasu serwera WWW, upstream i gniazda<\/h2>\n<p>Rozwa\u017cam limity czasu FastCGI i proxy od <strong>Nginx<\/strong> lub Apache w tym samym oknie, co limit czasu FPM, aby \u017cadna warstwa nie zako\u0144czy\u0142a si\u0119 zbyt wcze\u015bnie. Wol\u0119 gniazda uniksowe ni\u017c TCP, je\u015bli obie us\u0142ugi dzia\u0142aj\u0105 na tym samym ho\u015bcie, poniewa\u017c op\u00f3\u017anienie pozostaje minimalne. W przypadku konfiguracji rozproszonych u\u017cywam TCP ze stabilnymi warto\u015bciami keepalive i wystarczaj\u0105co du\u017c\u0105 pul\u0105 po\u0142\u0105cze\u0144. W przypadku wysokiej r\u00f3wnoleg\u0142o\u015bci, nginx synchronizuje worker_connections i warto\u015bci zaleg\u0142o\u015bci FPM. Gwarantuje to, \u017ce przekierowania pozostaj\u0105 szybkie i unikam czasu bezczynno\u015bci z powodu zbyt ciasnych po\u0142\u0105cze\u0144. <strong>w g\u00f3r\u0119 rzeki<\/strong>-limity.<\/p>\n\n<h2>Buforowanie, OPCache i baza danych jako d\u017awignie<\/h2>\n<p>Rozwi\u0105zuj\u0119 wiele problem\u00f3w zwi\u0105zanych z serwerami, redukuj\u0105c kosztowne operacje i minimalizuj\u0105c <strong>Czas reakcji<\/strong> ni\u017cej. W\u0142\u0105czam OPCache, rozs\u0105dnie zwi\u0119kszam limit pami\u0119ci cache i zapewniam wysoki wsp\u00f3\u0142czynnik trafie\u0144. Aby uzyska\u0107 powtarzaj\u0105ce si\u0119 wyniki, u\u017cywam buforowania aplikacji, dzi\u0119ki czemu procesy PHP s\u0105 wykonywane szybciej. Po stronie bazy danych optymalizuj\u0119 powolne zapytania i aktywuj\u0119 cache zapyta\u0144, kt\u00f3re s\u0105 odpowiednie dla u\u017cywanego systemu. Ka\u017cda zaoszcz\u0119dzona milisekunda zmniejsza obci\u0105\u017cenie bazy danych. <strong>Kolejka<\/strong> i zwi\u0119ksza przepustowo\u015b\u0107 na pracownika.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/php_server_setup_8943.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Bezpieczne mechanizmy awaryjne i restarty<\/h2>\n<p>Aktywuj\u0119 <strong>emergency_restart_threshold<\/strong> i emergency_restart_interval, aby FPM master uruchomi\u0142 si\u0119 ponownie, je\u015bli zbyt wiele dzieci ulegnie awarii w kr\u00f3tkim czasie. Ten kontrolowany restart zapobiega reakcjom \u0142a\u0144cuchowym i utrzymuje dost\u0119pno\u015b\u0107 us\u0142ugi. Jednocze\u015bnie ustawi\u0142em wyra\u017ane limity pami\u0119ci i liczby proces\u00f3w, aby zapobiec eskalacji. Kontrole stanu po stronie upstream automatycznie usuwaj\u0105 wadliwe backendy z puli i zmniejszaj\u0105 liczb\u0119 b\u0142\u0119d\u00f3w. Pozwala to utrzyma\u0107 <strong>Dost\u0119pno\u015b\u0107<\/strong> podczas gdy ja badam rzeczywist\u0105 przyczyn\u0119.<\/p>\n\n<h2>Precyzyjne dostosowanie limit\u00f3w systemu operacyjnego i systemd<\/h2>\n<p>Tak wi\u0119c <strong>listen.backlog<\/strong> faktycznie wchodzi w \u017cycie, dostosowuj\u0119 limity j\u0105dra. Warto\u015b\u0107 OS net.core.somaxconn musi by\u0107 co najmniej tak wysoka, jak ustawiony backlog, w przeciwnym razie system odetnie kolejk\u0119. Sprawdzam r\u00f3wnie\u017c liczb\u0119 dozwolonych deskryptor\u00f3w plik\u00f3w: W puli FPM mog\u0119 ustawi\u0107 rlimit_files, na poziomie us\u0142ugi zapewniam LimitNOFILE (systemd), a na poziomie j\u0105dra fs.file-max. Serwer WWW potrzebuje podobnych rezerw, aby nie osi\u0105gn\u0105\u0142 swoich limit\u00f3w wcze\u015bniej.<\/p>\n<p>Aby uzyska\u0107 bardziej stabilne op\u00f3\u017anienia, zmniejszam <strong>vm.swappiness<\/strong>, aby j\u0105dro nie wypiera\u0142o aktywnie u\u017cywanych stron pami\u0119ci przedwcze\u015bnie. W konfiguracjach o krytycznym op\u00f3\u017anieniu dezaktywuj\u0119 <strong>Przejrzyste ogromne strony<\/strong>, aby unikn\u0105\u0107 d\u0142ugich b\u0142\u0119d\u00f3w strony. Je\u015bli FPM dzia\u0142a przez TCP, synchronizuj\u0119 r\u00f3wnie\u017c parametry net.ipv4.tcp_max_syn_backlog i reuse\/keepalive. Takie szczeg\u00f3\u0142y systemu operacyjnego wydaj\u0105 si\u0119 niepozorne, ale decyduj\u0105 o tym, czy kolejki <em>g\u0142adki<\/em> lub czy po\u0142\u0105czenia zosta\u0142y ju\u017c odrzucone przed FPM.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/php_request_queue_8432.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Pomiar obci\u0105\u017cenia pami\u0119ci na proces<\/h2>\n<p>Zamiast dokonywa\u0107 uog\u00f3lnionych szacunk\u00f3w, mierz\u0119 <strong>Rzeczywista konsumpcja<\/strong> na pracownika przy rzeczywistym obci\u0105\u017ceniu. U\u017cywam narz\u0119dzi takich jak ps, smem lub pmap, filtruj\u0119 dzieci php-fpm i u\u015bredniam warto\u015bci RSS podczas wykonywania \u017c\u0105da\u0144. Wa\u017cne jest, aby wzi\u0105\u0107 pod uwag\u0119 wsp\u00f3\u0142dzielone wykorzystanie OPCache: pami\u0119\u0107 wsp\u00f3\u0142dzielona nie jest liczona wielokrotnie. Wyliczam pm.max_children na podstawie u\u015brednionej warto\u015bci, a tak\u017ce planuj\u0119 rezerw\u0119, aby maszyna nie wpad\u0142a w w\u0105skie gard\u0142o nawet podczas szczyt\u00f3w. <strong>Swapping<\/strong> przechyla si\u0119.<\/p>\n<p>Powtarzam ten pomiar po zmianie funkcji lub wersji. Nowe funkcje, wi\u0119cej zale\u017cno\u015bci lub zmiany w frameworkach mog\u0105 znacznie zwi\u0119kszy\u0107 \u015blad na proces. Dzi\u0119ki temu liczba proces\u00f3w jest realistyczna, a kolejka kr\u00f3tka.<\/p>\n\n<h2>Status PHP FPM, ping i metryki na \u017cywo<\/h2>\n<p>Aby szybko oceni\u0107 sytuacj\u0119, aktywuj\u0119 <strong>pm.status_path<\/strong> oraz <strong>Punkt ko\u0144cowy ping<\/strong> (ping.path\/ping.response). Powy\u017cej mog\u0119 zobaczy\u0107 kluczowe liczby, takie jak zaakceptowane po\u0142\u0105czenia, d\u0142ugo\u015b\u0107 kolejki nas\u0142uchiwania, bezczynne \/ zaj\u0119te procesy, osi\u0105gni\u0119te maksymalne dzieci i ich post\u0119p. Odczytuj\u0119 te warto\u015bci okresowo i ustawiam warto\u015bci progowe: je\u015bli kolejka nas\u0142uchiwania stale ro\u015bnie, albo zwi\u0119kszam procesy, albo eliminuj\u0119 przyczyn\u0119 powolnych \u017c\u0105da\u0144. Je\u015bli max osi\u0105gni\u0119tych dzieci skacze w g\u00f3r\u0119, podczas gdy idle pozostaje niski, pula jest zbyt ma\u0142a lub zablokowana przez <strong>biegacze d\u0142ugodystansowi<\/strong>.<\/p>\n<p>Oddzielam r\u00f3wnie\u017c pule o r\u00f3\u017cnych profilach, aby skoki w jednym obszarze (np. import API) nie rzuca\u0142y interaktywnego ruchu na kolana. W przypadkach diagnostycznych tymczasowo zwi\u0119kszam log_level i pozwalam slowlogowi przechwyci\u0107 wi\u0119cej pr\u00f3bek, ale nast\u0119pnie ponownie go zmniejszam, aby utrzyma\u0107 niskie obci\u0105\u017cenie we\/wy.<\/p>\n\n<h2>Przesy\u0142anie, buforowanie i du\u017ce tre\u015bci \u017c\u0105da\u0144<\/h2>\n<p>Przesy\u0142anie du\u017cych plik\u00f3w mo\u017ce niepotrzebnie wi\u0105za\u0107 pracownik\u00f3w, je\u015bli PHP musi najpierw odczyta\u0107 tre\u015b\u0107 \u017c\u0105dania. Upewniam si\u0119, \u017ce serwer WWW <strong>bufory<\/strong> (np. fastcgi_request_buffering dla NGINX), tak aby FPM uruchamia\u0142 si\u0119 tylko wtedy, gdy cia\u0142o jest kompletne. Oznacza to, \u017ce \u017caden pracownik nie blokuje si\u0119 podczas przesy\u0142ania. U\u017cywam client_max_body_size, post_max_size i max_input_time, aby kontrolowa\u0107, jak du\u017ce i jak d\u0142ugie mog\u0105 by\u0107 \u017c\u0105dania bez nara\u017cania punkt\u00f3w ko\u0144cowych. Je\u015bli pomi\u0119dzy nimi znajduj\u0105 si\u0119 pliki, alokuj\u0119 wystarczaj\u0105co szybk\u0105 pami\u0119\u0107 tymczasow\u0105 (SSD), aby unikn\u0105\u0107 zator\u00f3w bufora.<\/p>\n<p>Dla punkt\u00f3w ko\u0144cowych z bardzo du\u017cymi cia\u0142ami (np. eksport\/import) definiuj\u0119 dedykowane pule z w\u0142asnymi limitami czasu i mniejsz\u0105 r\u00f3wnoleg\u0142o\u015bci\u0105. Pozostawia to standardowych pracownik\u00f3w wolnych i <strong>Kolejka<\/strong> wa\u017cnych dzia\u0142a\u0144 u\u017cytkownika.<\/p>\n\n<h2>Po\u0142\u0105czenia z baz\u0105 danych i granice puli<\/h2>\n<p>Nawet najlepsze ustawienie FPM jest bezu\u017cyteczne, je\u015bli <strong>Baza danych<\/strong> wcze\u015bniej ograniczone. Dopasowuj\u0119 maksymaln\u0105 liczb\u0119 jednoczesnych proces\u00f3w PHP do rzeczywistej dost\u0119pnej pojemno\u015bci bazy danych. W przypadku trwa\u0142ych po\u0142\u0105cze\u0144 lub pul po\u0142\u0105cze\u0144 upewniam si\u0119, \u017ce suma wszystkich pul wynosi <em>na stronie<\/em> max_connections pozostaje. Je\u015bli istnieje wiele kr\u00f3tkich zapyta\u0144, pomaga to ograniczy\u0107 r\u00f3wnoleg\u0142o\u015b\u0107 PHP w umiarkowanym stopniu, aby baza danych nie ulega\u0142a awarii mi\u0119dzy tysi\u0105cami sesji.<\/p>\n<p>Wolne transakcje szybko powoduj\u0105 zaleg\u0142o\u015bci w kolejce FPM. Dlatego analizuj\u0119 czasy oczekiwania na blokad\u0119, wykorzystanie indeks\u00f3w i plany zapyta\u0144. Ka\u017cda redukcja czasu wykonywania DB natychmiast zmniejsza PHP<strong>Czas trwania dokumentu<\/strong> i zmniejsza d\u0142ugo\u015b\u0107 kolejek.<\/p>\n\n<h2>Wydania i wdro\u017cenia bez skok\u00f3w<\/h2>\n<p>Podczas wdra\u017cania nowych wersji unikam zimnych pami\u0119ci podr\u0119cznych i burz proces\u00f3w. U\u017cywam <strong>prze\u0142adowanie<\/strong> zamiast twardych restart\u00f3w, aby istniej\u0105ce \u017c\u0105dania worker ko\u0144czy\u0142y si\u0119 czysto (uwaga na process_control_timeout). Rozgrzewam OPCache na wczesnym etapie, uruchamiaj\u0105c \u015bcie\u017cki krytyczne raz przed prze\u0142\u0105czeniem lub pracuj\u0105c z \u0142adowaniem wst\u0119pnym. Zapobiega to jednoczesnemu parsowaniu plik\u00f3w klas przez wielu pracownik\u00f3w, a proces <strong>Czas reakcji<\/strong> wzrasta skokowo.<\/p>\n<p>W przypadku strategii niebieskiej\/zielonej lub kanarkowej stopniowo zwi\u0119kszam obci\u0105\u017cenie i monitoruj\u0119 strony stanu. Dopiero gdy kolejka, wska\u017anik b\u0142\u0119d\u00f3w i op\u00f3\u017anienia pozostaj\u0105 stabilne, zwi\u0119kszam udzia\u0142 ruchu. To kontrolowane podej\u015bcie chroni przed szczytami obci\u0105\u017cenia podczas wdra\u017cania.<\/p>\n\n<h2>Specjalizacje dotycz\u0105ce kontener\u00f3w i maszyn wirtualnych<\/h2>\n<p>W kontenerach, postrzegane <strong>Ca\u0142kowita pojemno\u015b\u0107 pami\u0119ci<\/strong> cz\u0119sto ni\u017csze ni\u017c raporty hosta. Dopasowuj\u0119 pm.max_children \u015bci\u015ble do limitu cgroup i planuj\u0119 rezerw\u0119 przeciwko zab\u00f3jcy OOM. Limity pami\u0119ci w PHP (memory_limit) i footprint na proces musz\u0105 si\u0119 zgadza\u0107, w przeciwnym razie pojedyncza warto\u015b\u0107 odstaj\u0105ca wystarczy do zamkni\u0119cia kontenera.<\/p>\n<p>Je\u015bli w kontenerze nie ma wymiany, twarde anulowanie jest bardziej prawdopodobne. W\u0142a\u015bnie dlatego utrzymuj\u0119 konserwatywne procesy, aktywuj\u0119 recykling i monitoruj\u0119 szczyty RSS w obci\u0105\u017ceniu produkcyjnym. Kilka szczup\u0142ych pul jest tutaj cz\u0119sto bardziej niezawodnych ni\u017c jedna du\u017ca, monolityczna pula.<\/p>\n\n<h2>Kontrolowana degradacja i przeciwci\u015bnienie<\/h2>\n<p>Je\u015bli <strong>Kolejka<\/strong> Polegam na kontrolowanej degradacji: celowo dostarczam 503 z ponown\u0105 pr\u00f3b\u0105 dla niekrytycznych punkt\u00f3w ko\u0144cowych w przypadku przeci\u0105\u017cenia, ograniczam drogie funkcje (np. wyszukiwanie na \u017cywo) i ograniczam r\u00f3wnoleg\u0142y dost\u0119p do hotspot\u00f3w. Dzi\u0119ki temu system jest responsywny, podczas gdy ja usuwam przyczyn\u0119, zamiast nara\u017ca\u0107 wszystkich u\u017cytkownik\u00f3w na przekroczenie limitu czasu.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/php-serverraum-1635.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kr\u00f3tkie podsumowanie<\/h2>\n<p>Przynosz\u0119 <strong>Kolejkowanie \u017c\u0105da\u0144 PHP<\/strong> pod kontrol\u0105 dzi\u0119ki sprytnemu dopasowaniu liczby wsp\u00f3\u0142bie\u017cnych proces\u00f3w do bud\u017cetu pami\u0119ci RAM i rodzaju obci\u0105\u017cenia. Wysokie warto\u015bci backlogu buforuj\u0105 szczyty, timeouty na wszystkich poziomach zgrabnie wsp\u00f3\u0142graj\u0105, a recykling usuwa pe\u0142zaj\u0105ce problemy z pami\u0119ci\u0105. Dzienniki i metryki pokazuj\u0105 mi, czy kolejka ro\u015bnie, gdzie utkn\u0119\u0142y \u017c\u0105dania i kiedy powinienem j\u0105 zacie\u015bni\u0107. Dzi\u0119ki starannym dostosowaniom i ukierunkowanemu buforowaniu skracam czas przetwarzania na \u017c\u0105danie i zwi\u0119kszam przepustowo\u015b\u0107. W ten spos\u00f3b serwery dostarczaj\u0105 sp\u00f3jne dane i unikaj\u0105 kosztownych awarii. <strong>Limity czasu<\/strong> w \u017cyciu codziennym.<\/p>","protected":false},"excerpt":{"rendered":"<p>Opanowanie kolejkowania \u017c\u0105da\u0144 PHP: optymalizacja obs\u0142ugi kolejek max children php i serwera. Przewodnik z praktycznymi wskaz\u00f3wkami dotycz\u0105cymi stabilnej wydajno\u015bci pod obci\u0105\u017ceniem.<\/p>","protected":false},"author":1,"featured_media":18914,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[780],"tags":[],"class_list":["post-18921","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"405","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_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 Request Queueing","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"18914","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/18921","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=18921"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/18921\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/18914"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=18921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=18921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=18921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}