{"id":20986,"date":"2026-08-25T11:50:02","date_gmt":"2026-08-25T09:50:02","guid":{"rendered":"https:\/\/webhosting.de\/php-fpm-slowlog-richtig-auswerten-performance-optimierung-debugging-analyse\/"},"modified":"2026-08-25T11:50:02","modified_gmt":"2026-08-25T09:50:02","slug":"prawidlowa-analiza-pliku-slowlog-w-php-fpm-optymalizacja-wydajnosci-debugowanie-analiza","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/php-fpm-slowlog-richtig-auswerten-performance-optimierung-debugging-analyse\/","title":{"rendered":"Jak prawid\u0142owo analizowa\u0107 plik slowlog PHP-FPM: skuteczne wykrywanie w\u0105skich garde\u0142 wydajno\u015bci"},"content":{"rendered":"<p>Poka\u017c\u0119 ci, jak <strong>Dziennik spowolnie\u0144 PHP-FPM<\/strong> celowo analizujesz dane, prawid\u0142owo interpretujesz \u015blady wykonania i na tej podstawie wyznaczasz jasne kroki zmierzaj\u0105ce do zmniejszenia op\u00f3\u017anie\u0144. W ten spos\u00f3b niezawodnie wykrywasz w\u0105skie gard\u0142a wydajno\u015bci, ustalasz priorytety dzia\u0142a\u0144 i sprawiasz, \u017ce czasy \u0142adowania staj\u0105 si\u0119 dla u\u017cytkownik\u00f3w odczuwalnie kr\u00f3tsze.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<ul>\n  <li><strong>\u015alad kompilacji<\/strong> odczyt: Ramka #0 pokazuje aktualn\u0105 klock\u0119 hamulcow\u0105.<\/li>\n  <li><strong>Limit czasu<\/strong> wybra\u0107: najpierw ustawi\u0107 na wysoki poziom, a nast\u0119pnie stopniowo obni\u017ca\u0107.<\/li>\n  <li><strong>Korelacja<\/strong> z dziennikiem dost\u0119pu: pewna identyfikacja wolno dzia\u0142aj\u0105cych adres\u00f3w URL.<\/li>\n  <li><strong>Pr\u00f3bka<\/strong> liczy\u0107: nadawa\u0107 priorytet powtarzaj\u0105cym si\u0119 funkcjom.<\/li>\n  <li><strong>Poprawki kodu<\/strong> wywnioskowa\u0107: konkretne podej\u015bcie do baz danych, interfejs\u00f3w API, p\u0119tli i wtyczek.<\/li>\n<\/ul>\n\n<h2>Czym jest plik slowlog PHP-FPM?<\/h2>\n\n<p>W serwisie Slowlog w przypadku d\u0142ugich \u017c\u0105da\u0144 zapisuje si\u0119 <strong>\u015alad kompilacji<\/strong> do pliku dziennika, rejestruj\u0105c w ten spos\u00f3b aktualny punkt wykonania bez przerywania \u017c\u0105dania. Dzi\u0119ki temu od razu widz\u0119, kt\u00f3ry skrypt, jaki adres URL i kt\u00f3ra funkcja blokuje przep\u0142yw. Wpisy zawieraj\u0105 sygnatur\u0119 czasow\u0105, pul\u0119, nazw\u0119 pliku skryptu, adres URI \u017c\u0105dania oraz \u0142a\u0144cuch wywo\u0142a\u0144 funkcji. Dzi\u0119ki temu 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, rozbudowanego renderowania lub blokuj\u0105cych operacji wej\u015bcia\/wyj\u015bcia. Kto rozumie te migawki, mo\u017ce bardzo szybko <strong>G\u0142\u00f3wna przyczyna<\/strong> okre\u015bli\u0107 zakres i zaplanowa\u0107 dzia\u0142ania.<\/p>\n\n<h2>Tak dzia\u0142a Slowlog w codziennym \u017cyciu<\/h2>\n\n<p>Po w\u0142\u0105czeniu tej opcji PHP-FPM zapisuje, gdy przekroczony zostanie okre\u015blony pr\u00f3g, plik <strong>Snapshot<\/strong> stosu do dziennika, podczas gdy \u017c\u0105danie jest nadal przetwarzane. Ka\u017cdy wpis zaczyna si\u0119 zazwyczaj od \u201e#0\u201c, czyli od miejsca, w kt\u00f3rym w\u0142a\u015bnie dochodzi do utraty czasu. Pomi\u0119dzy blokami cz\u0119sto dostrzegam puste wiersze, co u\u0142atwia rozdzielenie 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 lub 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 tylko dostrzegam powtarzaj\u0105ce si\u0119 wzorce, dostosowuj\u0119 na przyk\u0142ad <strong>pm.max_children<\/strong> i skorzystaj w tym celu z informacji zawartych w <a href=\"https:\/\/webhosting.de\/pl\/php-fpm-zarzadzanie-procesami-pm-max-children-optymalizacja-rdzenia\/\">Prawid\u0142owe ustawienie parametru pm.max_children<\/a>.<\/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\/08\/php-slowlog-analyse-6392.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>W\u0142\u0105czanie i konfigurowanie Slowlog<\/h2>\n\n<p>W\u0142\u0105czam t\u0119 funkcj\u0119 w odpowiedniej puli i ustalam \u015bcie\u017ck\u0119, limit czasu oraz g\u0142\u0119boko\u015b\u0107 \u015bledzenia, aby <strong>Ocena<\/strong> pozostaje w rozs\u0105dnych granicach. Nast\u0119pnie ponownie uruchamiam PHP-FPM i sprawdzam, czy plik dziennika jest zapisywalny z uprawnieniami u\u017cytkownika puli. Jako warto\u015b\u0107 pocz\u0105tkow\u0105 cz\u0119sto ustawiam 5 sekund, aby najpierw wychwyci\u0107 ra\u017c\u0105ce odst\u0119pstwa, nie zalewaj\u0105c przy tym systemu danymi dziennika. Nast\u0119pnie stopniowo obni\u017cam t\u0119 warto\u015b\u0107, gdy tylko upora\u0142em si\u0119 z najwi\u0119kszymi problemami. Aby logi by\u0142y przejrzyste, ograniczam g\u0142\u0119boko\u015b\u0107 \u015bledzenia do 20\u201330 ramek, co w praktyce zazwyczaj wystarcza. W ten spos\u00f3b utrzymuj\u0119 <strong>Rozmiar pliku<\/strong> pod kontrol\u0105 i nie pomijam \u017cadnych istotnych szczeg\u00f3\u0142\u00f3w.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Ustawienie<\/th>\n      <th>Cel<\/th>\n      <th>warto\u015b\u0107 pocz\u0105tkowa<\/th>\n      <th>Uwagi<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><code>slowlog<\/code><\/td>\n      <td>\u015acie\u017cka do pliku dziennika<\/td>\n      <td>\/var\/log\/php-fpm\/www-slow.log<\/td>\n      <td>Sprawd\u017a \u015bcie\u017cki w zale\u017cno\u015bci od dystrybucji; uprawnienia do zapisu dla <strong>www-data<\/strong> zapewni\u0107<\/td>\n    <\/tr>\n    <tr>\n      <td><code>request_slowlog_timeout<\/code><\/td>\n      <td>Pr\u00f3g dla pr\u0119dko\u015bci \u201ewolnej\u201c<\/td>\n      <td>5 s<\/td>\n      <td>Najpierw wystartowa\u0107 wysoko, a potem <strong>obni\u017ca\u0107<\/strong> (np. 2\u20133 s)<\/td>\n    <\/tr>\n    <tr>\n      <td><code>g\u0142\u0119boko\u015b\u0107 \u015bledzenia dziennika spowolnie\u0144 \u017c\u0105da\u0144<\/code><\/td>\n      <td>Maksymalna g\u0142\u0119boko\u015b\u0107 \u015bladu odwrotnego<\/td>\n      <td>20\u201330<\/td>\n      <td>Dbaj o to, by \u015blady by\u0142y czytelne, bez <strong>Najwa\u017cniejsze informacje<\/strong> straci\u0107<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Znajd\u017a plik dziennika i szybko go przejrzyj<\/h2>\n\n<p>Najpierw sprawdzam skonfigurowane \u015bcie\u017cki i otwieram plik dziennika za pomoc\u0105 <strong>mniej<\/strong> lub sprawd\u017a ostatnie wiersze za pomoc\u0105 <code>tail -40<\/code>. Dzi\u0119ki temu od razu widz\u0119, czy pojawiaj\u0105 si\u0119 nowe wpisy i kt\u00f3re skrypty powtarzaj\u0105 si\u0119. Aby szybko zorientowa\u0107 si\u0119 w sytuacji, zwracam uwag\u0119 na nazwy plik\u00f3w, powi\u0105zane pule oraz podejrzane adresy URI. Je\u015bli nie znajduj\u0119 \u017cadnych wpis\u00f3w, aktywuj\u0119 opcje w puli, od\u015bwie\u017cam us\u0142ug\u0119 i sprawdzam w\u0142a\u015bcicieli oraz uprawnienia. W \u015brodowiskach zarz\u0105dzanych sprawdzam r\u00f3wnie\u017c panel lub skrypty startowe, aby upewni\u0107 si\u0119, \u017ce dziennik spowolnie\u0144 rzeczywi\u015bcie <strong>dzia\u0142a r\u00f3wnolegle<\/strong>.<\/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\/08\/phpfpm_slowlogs4357.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Rozpoznawanie blok\u00f3w i liczenie wzor\u00f3w<\/h2>\n\n<p>Ka\u017cdy wpis pojawia si\u0119 w postaci bloku, cz\u0119sto oddzielonego znakiem <strong>Pusta linia<\/strong>, co u\u0142atwia liczenie. Kieruj\u0119 si\u0119 wierszami \u201e#0\u201c, poniewa\u017c wskazuj\u0105 one aktualny punkt wykonania, w kt\u00f3rym traci si\u0119 czas. Za pomoc\u0105 prostych potok\u00f3w w pow\u0142oce wyodr\u0119bniam najwa\u017cniejsze funkcje i sprawdzam, kt\u00f3re miejsca najcz\u0119\u015bciej spowalniaj\u0105 dzia\u0142anie. W ten spos\u00f3b celowo nadaj\u0119 priorytet funkcjom, kt\u00f3re \u0142\u0105cznie poch\u0142aniaj\u0105 najwi\u0119cej czasu. Nast\u0119pnie sprawdzam, czy te \u201egor\u0105ce punkty\u201d pojawiaj\u0105 si\u0119 tylko w momentach szczytowego obci\u0105\u017cenia, czy te\u017c stanowi\u0105 problem przez ca\u0142y czas. Ta klasyfikacja determinuje <strong>Sekwencja<\/strong> moich dzia\u0142a\u0144.<\/p>\n\n<h2>Przegl\u0105danie wpis\u00f3w: od ramki #0 do pocz\u0105tku<\/h2>\n\n<p>Czytaj\u0105c wpisy, zaczynam od g\u00f3ry, od <strong>#0<\/strong> i przechodz\u0119 krok po kroku w d\u00f3\u0142, aby zrozumie\u0107 \u015bcie\u017ck\u0119 od punktu wej\u015bcia do bie\u017c\u0105cego miejsca. D\u0142ugie \u0142a\u0144cuchy szablon\u00f3w wskazuj\u0105 na skomplikowane renderowanie, du\u017ca liczba hook\u00f3w \u2013 na nadmiar wtyczek, a du\u017ca ilo\u015b\u0107 zapyta\u0144 SQL \u2013 na brak indeks\u00f3w. Zaznaczam numery wierszy, nazwy funkcji i \u015bcie\u017cki do plik\u00f3w, aby m\u00f3c szybko znale\u017a\u0107 kod. Je\u015bli stos wygl\u0105da na p\u0119tle oczekuj\u0105ce lub powtarzaj\u0105ce si\u0119 operacje, sprawdzam pami\u0119\u0107 podr\u0119czn\u0105 i buforowanie. Dzi\u0119ki temu nie trac\u0119 czasu na <strong>Lokalizacja<\/strong> problemu w kodzie.<\/p>\n\n<h2>Korelacja Slowlogu z logami dost\u0119pu<\/h2>\n\n<p>\u0141\u0105cz\u0119 Slowlog z logami serwera WWW, aby m\u00f3c zidentyfikowa\u0107 powolne \u017c\u0105dania konkretnego <strong>URL<\/strong> mog\u0119 przyporz\u0105dkowa\u0107. Na podstawie sygnatur czasowych i opcjonalnie identyfikator\u00f3w PID odnajduj\u0119 odpowiednie wpisy w logach Nginx lub Apache. Dzi\u0119ki temu rozpoznaj\u0119 parametry, agenty u\u017cytkownika i czasy odpowiedzi poza PHP. Je\u015bli pojawiaj\u0105 si\u0119 powtarzaj\u0105ce si\u0119 \u017ar\u00f3d\u0142a wywo\u0142a\u0144 lub identyczne ci\u0105gi zapyta\u0144, przeprowadzam test w\u0142a\u015bnie z tymi scenariuszami. W ten spos\u00f3b szybko znajduj\u0119 przypadki, kt\u00f3re da si\u0119 odtworzy\u0107, i utrzymuj\u0119 <strong>Czas analizy<\/strong> kr\u00f3tko m\u00f3wi\u0105c.<\/p>\n\n<h2>Stopniowe obni\u017canie warto\u015bci progowej<\/h2>\n\n<p>Zaczynam od szerokiego progu, najpierw usuwam najwi\u0119ksze <strong>Warto\u015bci odstaj\u0105ce<\/strong> a nast\u0119pnie stopniowo zmniejszam. Taki spos\u00f3b post\u0119powania ogranicza obj\u0119to\u015b\u0107 log\u00f3w i pozwala mi skupi\u0107 energi\u0119 na warto\u015bciowych poprawkach. Po ka\u017cdej rundzie optymalizacji wybieram ni\u017cszy pr\u00f3g i ponownie zbieram zestawy danych. W ten spos\u00f3b przechodz\u0119 od zgrubnej selekcji do precyzyjnego dostrajania, nie gubi\u0105c si\u0119 w szumie. Wynikiem tego s\u0105 ukierunkowane poprawki i <strong>czysty<\/strong> Przegl\u0105d pozosta\u0142ych w\u0105skich garde\u0142.<\/p>\n\n<h2>Od \u201eslowlogu\u201d do rozwi\u0105zania: typowe sposoby naprawy<\/h2>\n\n<p>Je\u015bli g\u00f3rna ramka wy\u015bwietla funkcje bazy danych, sprawdzam zapytania SQL za pomoc\u0105 <strong>WYJA\u015aNIENIE<\/strong>, dodaj\u0119 brakuj\u0105ce indeksy i ograniczam zestawy wynik\u00f3w. W przypadku zdalnych us\u0142ug skracam limity czasu, przetwarzam odpowiedzi asynchronicznie lub buforuj\u0119 wyniki. Je\u015bli znajd\u0119 kosztowne p\u0119tle, upraszczam logik\u0119, zmniejszam liczb\u0119 przebieg\u00f3w i stosuj\u0119 bardziej wydajne struktury. W WordPressie zaznaczam powtarzaj\u0105ce si\u0119 haki, wymieniam ci\u0119\u017ckie rozszerzenia i stawiam na l\u017cejszy motyw. Je\u015bli liczba proces\u00f3w PHP blokuje przetwarzanie, monitoruj\u0119 czasy oczekiwania i dodatkowo zapoznaj\u0119 si\u0119 z <strong>\u015alady wykonania<\/strong> a tak\u017ce kolejki, na przyk\u0142ad za po\u015brednictwem <a href=\"https:\/\/webhosting.de\/pl\/kolejkowanie-zadan-php-maksymalne-przetwarzanie-dzieci-limity-wydajnosci\/\">Kolejkowanie \u017c\u0105da\u0144 w PHP<\/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\/08\/PHP-FPM-Slowlog-Analyse-4958.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Praca ci\u0105g\u0142a: przejrzyste zarz\u0105dzanie logami<\/h2>\n\n<p>Nie ustawia\u0142em rejestracji na pe\u0142n\u0105 moc na sta\u0142e, \u017ceby <strong>Obci\u0105\u017cenie wej\u015b\u0107\/wyj\u015b\u0107<\/strong> pozostaje pod kontrol\u0105. Zamiast tego pracuj\u0119 etapami: najpierw aktywnie analizuj\u0119 i optymalizuj\u0119, a potem wracam do umiarkowanego poziomu. Dzi\u0119ki logrotate utrzymuj\u0119 pliki w porz\u0105dku i archiwizuj\u0119 stare dane w postaci skompresowanej. Po zako\u0144czeniu analizy podnosz\u0119 pr\u00f3g lub tymczasowo wy\u0142\u0105czam funkcj\u0119 slowloggingu. Ponadto dokumentuj\u0119 wnioski i poprawki, aby p\u00f3\u017aniejsze audyty mia\u0142y jasny <strong>\u015blad<\/strong> znale\u017a\u0107.<\/p>\n\n<h2>Diagnoza hostingu: oddzielenie serwera od aplikacji<\/h2>\n\n<p>Du\u017ca liczba identycznych ramek Slowlog przy wysokim obci\u0105\u017ceniu procesora wskazuje na <strong>Kod aplikacji<\/strong>, podczas gdy brakuj\u0105ce wpisy przy powolnej stronie wskazuj\u0105 raczej na problemy z wej\u015bciem\/wyj\u015bciem, sieci\u0105 lub serwerem bazy danych. W takich przypadkach por\u00f3wnuj\u0119 TTFB, czasy PHP i op\u00f3\u017anienie upstream, aby zlokalizowa\u0107 w\u0105skie gard\u0142o. Je\u015bli zauwa\u017c\u0119 kolejki i d\u0142ugi czas oczekiwania przed wykonaniem, sprawdzam limity i liczb\u0119 proces\u00f3w. Uzupe\u0142niam wtedy swoj\u0105 diagnoz\u0119 o informacje dotycz\u0105ce przetwarzania \u017c\u0105da\u0144 i bior\u0119 pod uwag\u0119 ewentualne limity, kt\u00f3re spowalniaj\u0105 przetwarzanie. Aby uzyska\u0107 rzeteln\u0105 ocen\u0119 sytuacji, opr\u00f3cz log\u00f3w analizuj\u0119 r\u00f3wnie\u017c wskaz\u00f3wki dotycz\u0105ce <a href=\"https:\/\/webhosting.de\/pl\/php-fpm-zarzadzanie-procesami-pm-max-children-optymalizacja-rdzenia\/\">Prawid\u0142owe ustawienie parametru pm.max_children<\/a> lub artyku\u0142y dotycz\u0105ce czasu oczekiwania, abym m\u00f3g\u0142 <strong>Pojemno\u015b\u0107<\/strong> dostosuj\u0119 to w spos\u00f3b sensowny.<\/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\/08\/phpfpm_slowlog_analysis_4732.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Przyk\u0142ad z praktyki: powolne dzia\u0142anie panelu administracyjnego WordPressa<\/h2>\n\n<p>Ustawi\u0142em <strong>request_slowlog_timeout<\/strong> Najpierw ustawiam czas na 5 sekund, restartuj\u0119 PHP-FPM i zbieram dane przez 30 do 60 minut przy rzeczywistym obci\u0105\u017ceniu. Nast\u0119pnie zliczam najcz\u0119\u015bciej wywo\u0142ywane funkcje \u201e#0\u201c i szukam powtarzaj\u0105cych si\u0119 hook\u00f3w lub kosztownych wywo\u0142a\u0144 WP_Query. Je\u015bli pojawiaj\u0105 si\u0119 us\u0142ugi zewn\u0119trzne, mierz\u0119 czasy odpowiedzi i celowo buforuj\u0119 wyniki. Je\u015bli wy\u015bwietlanie stron jest spowalniane przez dost\u0119py sesyjne, sprawdzam zachowanie blokad i, je\u015bli to mo\u017cliwe, przenosz\u0119 operacje zwi\u0105zane z sesj\u0105 poza \u015bcie\u017ck\u0119 krytyczn\u0105. Szczeg\u00f3lnie w przypadku logowania i dzia\u0142a\u0144 administracyjnych testuj\u0119 ustawienia i wy\u0142\u0105czam powiadomienia. <a href=\"https:\/\/webhosting.de\/pl\/php-blokowanie-sesji-wordpress-logowanie-powolne-optymalizacja-serwer-fix\/\">Blokowanie sesji PHP<\/a> \u017ceby m\u00f3j <strong>Backend<\/strong> reaguje szybciej.<\/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\/08\/server-analyse-php-4782.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Projektowanie baz danych i prawa: solidna podstawa dla u\u017cytecznych slowlog\u00f3w<\/h2>\n<p>Rozdzielam aplikacje na osobne <strong>baseny<\/strong> o jasnych nazwach (np. www, admin, api), ustaw jednoznaczne <code>s\u0142ucha\u0107<\/code>-gniazda i indywidualne <code>slowlog<\/code>-\u015bcie\u017cki. Dzi\u0119ki temu \u0142atwiej mi powi\u0105za\u0107 wpisy i unikn\u0105\u0107 pomy\u0142ek. Wa\u017cna jest sp\u00f3jno\u015b\u0107 <strong>Prawa do plik\u00f3w<\/strong>: U\u017cytkownik puli (cz\u0119sto www-data) musi mie\u0107 uprawnienia do zapisu w \u015bcie\u017cce log\u00f3w i w katalogu. W konfiguracjach z kontenerami lub chroot sprawdzam, czy \u015bcie\u017cki istniej\u0105 w przestrzeni nazw i s\u0105 trwa\u0142e \u2013 w przeciwnym razie logi znikn\u0105 po ponownym uruchomieniu.<\/p>\n\n<h2>Szczeg\u00f3\u0142owa analiza i automatyczna ocena wpisu w serwisie Slowlog<\/h2>\n<p>Zazwyczaj wpisy zaczynaj\u0105 si\u0119 od sygnatury czasowej, puli, nazwy pliku skryptu i adresu URI \u017c\u0105dania, a po nich nast\u0119puj\u0105 ramki. Zliczam wiersze \u201e#0\u201c i grupuj\u0119 je wed\u0142ug nazw funkcji, aby uwidoczni\u0107 newralgiczne punkty. Za pomoc\u0105 prostych operator\u00f3w pipe wyodr\u0119bniam elementy spowalniaj\u0105ce:<\/p>\n<pre><code>grep -E \"^#0|request.uri|script_filename\" \/var\/log\/php-fpm\/www-slow.log | sed 's\/  *\/ \/g'\n<\/code><\/pre>\n<p>Albo wymieni\u0119 najcz\u0119\u015bciej pojawiaj\u0105ce si\u0119 najlepsze klatki:<\/p>\n<pre><code>grep \"^#0\" \/var\/log\/php-fpm\/www-slow.log | awk -F\": \" '{print $2}' | awk '{print $1}' | sort | uniq -c | sort -nr | head\n<\/code><\/pre>\n<p>Je\u015bli chc\u0119 do\u0142\u0105czy\u0107 adres URL i plik, przygotowuj\u0119 bloki za pomoc\u0105 <code>awk<\/code> i zapisz mi najlepsze kombinacje funkcji, adres\u00f3w URI i skrypt\u00f3w. W ten spos\u00f3b ustalam priorytety poprawek, kt\u00f3re przynios\u0105 najwi\u0119ksze korzy\u015bci.<\/p>\n\n<h2>Mapa timeoutu: jak wsp\u00f3\u0142dzia\u0142aj\u0105 Slowlog, PHP i serwer WWW<\/h2>\n<p>Aby postawi\u0107 trafn\u0105 diagnoz\u0119, zlecam <strong>wszystkie<\/strong> Limity czasu: <code>request_slowlog_timeout<\/code> uruchamia migawk\u0119, <code>max_execution_time<\/code> ogranicza czas dzia\u0142ania PHP w skrypcie, <code>request_terminate_timeout<\/code> mo\u017ce wymusi\u0107 zamkni\u0119cie procesu FPM. Po stronie serwera WWW nale\u017cy <em>fastcgi<\/em>\u2013 lub. <em>proxy<\/em>-limity czasu (np. <code>fastcgi_read_timeout<\/code>) oraz limity czasu po stronie klienta. Je\u015bli ustawi\u0119 slowlog <em>powy\u017cej<\/em> w przypadku przekroczenia limitu czasu serwera, trac\u0119 dane; je\u015bli <em>w tym<\/em>, uzyskuj\u0119 przydatne migawki, zanim \u017c\u0105dania przestan\u0105 nap\u0142ywa\u0107. Dlatego celowo zachowuj\u0119 nast\u0119puj\u0105c\u0105 kolejno\u015b\u0107: limit czasu serwera WWW &gt; zako\u0144czenie dzia\u0142ania PHP &gt; dziennik spowolnie\u0144 &gt; op\u00f3\u017anienie docelowe.<\/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\/08\/php-fpm-slow-logs-analysis-7125.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Uwzgl\u0119dnienie statusu FPM, kolejki i zarz\u0105dzania procesami<\/h2>\n<p>Slowlog pokazuje, <em>gdzie<\/em> traci si\u0119 czas \u2013 status FPM wskazuje, <em>dlaczego<\/em> Czekaj\u0105 zapytania. Aktywuj\u0119 punkt ko\u0144cowy stanu, obserwuj\u0119 <strong>bezczynno\u015b\u0107<\/strong>, <strong>aktywny<\/strong> oraz <strong>kolejka ods\u0142uchu<\/strong> i por\u00f3wnuj\u0119 je z sygnaturami czasowymi ze slowlogu. Je\u015bli kolejka ro\u015bnie, podczas gdy wielu pracownik\u00f3w utknie w tych samych funkcjach, to w\u0105skim gard\u0142em jest kod; je\u015bli kolejka ro\u015bnie bez wzrostu wpis\u00f3w w slowlogu, oznacza to brak wydajno\u015bci lub spowolnienie ze strony element\u00f3w wy\u017cszych w \u0142a\u0144cuchu. Na tej podstawie dostosowuj\u0119 <code>pm<\/code>-Ustawienia (dynamiczne\/na \u017c\u0105danie), <code>pm.max_children<\/code> i w razie potrzeby. <code>pm.max_requests<\/code>, aby wykrywa\u0107 wycieki pami\u0119ci lub fragmentacj\u0119.<\/p>\n\n<h2>Szczeg\u00f3lne cechy w kontenerach i \u015brodowiskach zarz\u0105dzanych<\/h2>\n<p>W \u015brodowisku Docker\/Kubernetes FPM cz\u0119sto zapisuje logi w <strong>stdout\/stderr<\/strong> lub do \u015bcie\u017cek gromadzonych przez agregatory log\u00f3w. \u015awiadomie decyduj\u0119 si\u0119 na <em>a<\/em> Aby unikn\u0105\u0107 powt\u00f3rze\u0144 lub brak\u00f3w w wpisach. Z <code>error_log = \/proc\/self\/fd\/2<\/code> oraz dedykowanym <code>slowlog<\/code>-W przypadku \u015bcie\u017cki wskazuj\u0105cej na wolumin trwa\u0142y migawki pozostaj\u0105 dost\u0119pne. W konfiguracjach zarz\u0105dzanych sprawdzam, czy dostawca us\u0142ug hostingowych w\u0142\u0105czy\u0142 lub ograniczy\u0142 funkcj\u0119 slowlog\u00f3w \u2013 i dostosowuj\u0119 interwa\u0142y, aby nie kolidowa\u0107 z rotacjami.<\/p>\n\n<h2>Ochrona danych i bezpiecze\u0144stwo: logi bez ryzyka<\/h2>\n<p>\u015alady wykonania mog\u0105 zawiera\u0107 poufne <strong>Parametry<\/strong>, \u015bcie\u017cki do plik\u00f3w lub identyfikatory sesji. Minimalizuj\u0119 ryzyko, zapisuj\u0105c ci\u0105gi zapyta\u0144 w logach dost\u0119pu, wy\u0142\u0105czaj\u0105c komunikaty debugowania w kodzie oraz ograniczaj\u0105c kr\u0105g os\u00f3b uprawnionych do wgl\u0105du. W przypadku wymiany danych z podmiotami zewn\u0119trznymi anonimizuj\u0119 \u015bcie\u017cki i usuwam tokeny. W \u015brodowiskach produkcyjnych ustalam kr\u00f3tkie okresy przechowywania danych oraz wdra\u017cam rotacj\u0119 i kompresj\u0119 log\u00f3w w ca\u0142ym systemie.<\/p>\n\n<h2>WordPress: szybkie rozpoznawanie powtarzaj\u0105cych si\u0119 wzorc\u00f3w<\/h2>\n<ul>\n  <li><strong>WP_Query\/WP_Meta_Query<\/strong>: Brak indeks\u00f3w w <code>postmeta<\/code> lub je\u015bli filtrowanie odbywa si\u0119 wed\u0142ug p\u00f3l nieindeksowanych, czas wykonania gwa\u0142townie wzrasta. Ograniczam zapytania meta, korzystam z taksonomii lub tworz\u0119 ukierunkowane indeksy.<\/li>\n  <li><strong>Stany przej\u015bciowe i pami\u0119\u0107 podr\u0119czna obiekt\u00f3w<\/strong>: Liczne podobne obliczenia wskazuj\u0105 na brak trwa\u0142ej pami\u0119ci podr\u0119cznej. W\u0142\u0105czam pami\u0119\u0107 podr\u0119czn\u0105 obiekt\u00f3w, optymalizuj\u0119 klucze pami\u0119ci podr\u0119cznej i czasy TTL.<\/li>\n  <li><strong>Hooki\/filtry<\/strong>: D\u0142ugie \u0142a\u0144cuchy w stosie wskazuj\u0105 na zb\u0119dne wtyczki. Sprawdzam najdro\u017csze punkty zaczepienia i usuwam lub zast\u0119puj\u0119 rozszerzenia.<\/li>\n  <li><strong>\u017b\u0105dania HTTP<\/strong>: Wewn\u0119trzne wywo\u0142ania API (wp_remote_get) powinny korzysta\u0107 z limit\u00f3w czasu, funkcji keep-alive i buforowania; w miar\u0119 mo\u017cliwo\u015bci odpowiedzi nie powinny blokowa\u0107 w\u0105tku \u017c\u0105dania.<\/li>\n  <li><strong>Renderowanie szablon\u00f3w<\/strong>: G\u0142\u0119boko\u015b\u0107 <code>get_template_part<\/code>-Kaskady z dost\u0119pem do plik\u00f3w korzystaj\u0105 z buforowania i mniejszej fragmentacji.<\/li>\n<\/ul>\n\n<h2>Jak unikn\u0105\u0107 b\u0142\u0119dnych interpretacji: czego nie pokazuje Slowlog<\/h2>\n<p>Snapshot to <strong>Migawka<\/strong>. Nie opisuje on ca\u0142ego cyklu \u017cycia \u017c\u0105dania, lecz stan w momencie jego wywo\u0142ania. Typowe pu\u0142apki:<\/p>\n<ul>\n  <li><strong>B\u0142\u0105d selekcji pr\u00f3by<\/strong>: Rzadkie, ale niezwykle kosztowne \u015bcie\u017cki mog\u0105 zosta\u0107 utracone, je\u015bli limit czasu jest zbyt niski lub faza by\u0142a kr\u00f3tka.<\/li>\n  <li><strong>Wywo\u0142ania systemowe powoduj\u0105ce zablokowanie<\/strong>: <code>fopen<\/code>, <code>stat<\/code> lub operacje wyszukiwania adres\u00f3w DNS s\u0105 przedstawiane jako funkcje PHP, podczas gdy rzeczywisty czas oczekiwania ma miejsce w j\u0105drze systemu lub w sieci.<\/li>\n  <li><strong>Automatyczne \u0142adowanie<\/strong>: Wiele ma\u0142ych plik\u00f3w do\u0142\u0105czanych bez Opcache powoduje straty rozproszone, kt\u00f3re w stosie wydaj\u0105 si\u0119 niegro\u017ane. Sprawdzenie wska\u017anika trafie\u0144 Opcache pomaga w ocenie sytuacji.<\/li>\n<\/ul>\n\n<h2>\u015aledzenie CLI, Cron i webhook\u00f3w<\/h2>\n<p>Nie wszystkie problemy z wydajno\u015bci\u0105 wynikaj\u0105 z dzia\u0142ania FPM. Ci\u0119\u017ckie <strong>Cronjobs<\/strong> (np. wp-cron), procesy kolejkowe lub webhooki blokuj\u0105 procesor, operacje wej\u015bcia\/wyj\u015bcia lub baz\u0119 danych, co po\u015brednio pogarsza czasy odpowiedzi. Izoluj\u0119 takie obci\u0105\u017cenia w osobnych procesach, planuj\u0119 je poza godzinami szczytu i sprawdzam, czy dzia\u0142aj\u0105 one za po\u015brednictwem HTTP wyzwalanego przez FPM zamiast CLI \u2013 w przeciwnym razie zniekszta\u0142ca to obraz w slowlogu.<\/p>\n\n<h2>Wdra\u017canie rotacji log\u00f3w w praktyce<\/h2>\n<p>Aby zapobiec nadmiernemu rozrostowi plik\u00f3w slowlog, cz\u0119sto je rotuj\u0119 i kompresuj\u0119 starsze zapisy. Typowa rotacja zachowuje kilka generacji, sygnalizuje FPM konieczno\u015b\u0107 ponownego otwarcia i pozwala unikn\u0105\u0107 luk. Wa\u017cne: po rotacji nale\u017cy ponownie uruchomi\u0107 FPM (HUP), aby nowe wpisy nie trafia\u0142y w otch\u0142a\u0144. Konkretne ustawienia dostosowuj\u0119 do ruchu, limitu czasu i g\u0142\u0119boko\u015bci \u015bledzenia.<\/p>\n\n<h2>Lista kontrolna zapewniaj\u0105ca szybkie wyniki<\/h2>\n<ul>\n  <li>W\u0142\u0105cz Slowlog dla ka\u017cdego puli, sprawd\u017a \u015bcie\u017cki i uprawnienia.<\/li>\n  <li>Uruchom na 5 sekund, zbierz dane, policz najlepsze klatki.<\/li>\n  <li>Korelacja z logami dost\u0119pu: znacznik czasu, URI, User-Agent.<\/li>\n  <li>Nale\u017cy sprawdzi\u0107 limity czasu serwer\u00f3w upstream i serwer\u00f3w WWW.<\/li>\n  <li>Monitorowanie stanu FPM i kolejki, <strong>pm<\/strong>-Dostosuj limity.<\/li>\n  <li>Najpierw nale\u017cy usun\u0105\u0107 w\u0105skie gard\u0142a: indeksy SQL, buforowanie, kosztowne haki, operacje we\/wy.<\/li>\n  <li>Stopniowo zmniejsza\u0107 czas oczekiwania, a nast\u0119pnie ponownie dokona\u0107 pomiaru.<\/li>\n  <li>Rotacja log\u00f3w, dokumentowanie wniosk\u00f3w, \u015bledzenie zmian.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/phpfpm_slowlogs4357.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>W skr\u00f3cie: Twoja droga do lepszych wynik\u00f3w<\/h2>\n\n<p>W\u0142\u0105czam Slowlog, czytam <strong>Najlepsze ramki<\/strong>, por\u00f3wnuj\u0119 dane z logami dost\u0119pu i najpierw eliminuj\u0119 najwi\u0119ksze warto\u015bci odstaj\u0105ce. Nast\u0119pnie obni\u017cam pr\u00f3g, sprawdzam powtarzaj\u0105ce si\u0119 wzorce i wprowadzam ukierunkowane poprawki w kodzie, konfiguracji i buforowaniu. Dzi\u0119ki rotacji log\u00f3w i umiarkowanym limitom czasu utrzymuj\u0119 niskie obci\u0105\u017cenie systemowe. W przypadku WordPressa skupiam si\u0119 na kosztownych zapytaniach, wtyczkach, hookach i ewentualnych blokadach sesji. W ten spos\u00f3b niezawodnie znajduj\u0119 prawdziwe <strong>W\u0105skie gard\u0142a<\/strong> i zapewnia zauwa\u017calnie szybsze odpowiedzi.<\/p>","protected":false},"excerpt":{"rendered":"<p>Dowiedz si\u0119, jak prawid\u0142owo interpretowa\u0107 plik slowlog PHP-FPM i szczeg\u00f3\u0142owo analizowa\u0107 powolne \u017c\u0105dania. Dzi\u0119ki temu przewodnikowi b\u0119dziesz m\u00f3g\u0142 celowo zoptymalizowa\u0107 wydajno\u015b\u0107 swojej aplikacji PHP \u2013 to idealny pocz\u0105tek efektywnego debugowania w PHP.<\/p>","protected":false},"author":1,"featured_media":20979,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[780],"tags":[],"class_list":["post-20986","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":"116","_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-FPM Slowlog","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":"20979","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20986","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=20986"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20986\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/20979"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=20986"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=20986"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=20986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}