{"id":20682,"date":"2026-08-15T18:19:23","date_gmt":"2026-08-15T16:19:23","guid":{"rendered":"https:\/\/webhosting.de\/bcc-tools-linux-performance-ebpf-observability-focus\/"},"modified":"2026-08-15T18:19:23","modified_gmt":"2026-08-15T16:19:23","slug":"bcc-narzedzia-linux-wydajnosc-ebpf-obserwowalnosc-w-centrum-uwagi","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/bcc-tools-linux-performance-ebpf-observability-focus\/","title":{"rendered":"Narz\u0119dzia bcc w praktyce: praktyczny przewodnik po in\u017cynierii wydajno\u015bci systemu Linux z wykorzystaniem eBPF"},"content":{"rendered":"<p>Poka\u017c\u0119 krok po kroku, jak <strong>narz\u0119dzia bcc<\/strong> wykorzystuj\u0119 eBPF do szybkiego lokalizowania i usuwania w\u0105skich garde\u0142 na serwerach z systemem Linux. W tym celu stosuj\u0119 praktyczne schematy dzia\u0142ania, mierz\u0119 rzeczywiste op\u00f3\u017anienia w j\u0105drze systemu oraz \u0142\u0105cz\u0119 zdarzenia z procesora, operacji wej\u015bcia\/wyj\u015bcia i sieci w jedn\u0105 <strong>czysty<\/strong> Analiza przyczyn.<\/p>\n\n<h2>Punkty centralne<\/h2>\n<ul>\n  <li><strong>eBPF<\/strong> zapewnia dog\u0142\u0119bne \u015bledzenie przy niewielkim obci\u0105\u017ceniu.<\/li>\n  <li><strong>narz\u0119dzia bcc<\/strong> obejmuj\u0105 procesor, wej\u015bcia\/wyj\u015bcia, sie\u0107 i procesy.<\/li>\n  <li><strong>Zwi\u0105zane z produkcj\u0105<\/strong> mo\u017cna z niego korzysta\u0107 bez wprowadzania zmian w aplikacji.<\/li>\n  <li><strong>Lista kontrolna<\/strong> z dziesi\u0119cioma narz\u0119dziami na pocz\u0105tek.<\/li>\n  <li><strong>Bezpiecze\u0144stwo<\/strong> dzi\u0119ki narz\u0119dziu Verifier i jasnym zasadom.<\/li>\n<\/ul>\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\/linux-performance-ebpf-4976.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Dlaczego eBPF jest przydatny w in\u017cynierii wydajno\u015bci systemu Linux<\/h2>\n<p>Si\u0119gam po <strong>eBPF<\/strong>, poniewa\u017c chc\u0119 mierzy\u0107 zdarzenia j\u0105dra w spos\u00f3b bezpieczny, selektywny i przy bardzo niewielkim obci\u0105\u017ceniu. Klasyczne narz\u0119dzia pokazuj\u0105 sumy, ale rzadko wyja\u015bniaj\u0105, dlaczego w\u0105tki czekaj\u0105, pakiety s\u0105 wysy\u0142ane ponownie lub operacje wej\u015bcia\/wyj\u015bcia utkn\u0119\u0142y; eBPF wype\u0142nia t\u0119 luk\u0119 dzi\u0119ki <strong>konkretne<\/strong> Zdarzenia. Programy dzia\u0142aj\u0105 w j\u0105drze, weryfikator sprawdza je wcze\u015bniej, a ja mog\u0119 je uruchomi\u0107 bez konieczno\u015bci ponownego uruchamiania systemu. W ten spos\u00f3b koreluj\u0119 wywo\u0142ania z przestrzeni u\u017cytkownika ze \u015bcie\u017ckami j\u0105dra i uzyskuj\u0119 obraz, kt\u00f3ry pozwala na natychmiastowe optymalizacje. Osoby, kt\u00f3re chc\u0105 pog\u0142\u0119bi\u0107 swoj\u0105 wiedz\u0119, znajd\u0105 przegl\u0105d tematu w moim kr\u00f3tkim wprowadzeniu do <a href=\"https:\/\/webhosting.de\/pl\/ebpf-analiza-wydajnosci-linux-sledzenie-serwerow-monitorowanie-obserwowalnosc\/\">Analiza wydajno\u015bci eBPF<\/a>, w kt\u00f3rym nakre\u015blono wzajemne powi\u0105zania mi\u0119dzy \u015bledzeniem a obserwowalno\u015bci\u0105.<\/p>\n\n<h2>Czym s\u0105 narz\u0119dzia BCC i gdzie je znajd\u0119?<\/h2>\n<p>Die <strong>bcc<\/strong> Narz\u0119dzia \u201etools\u201d to gotowe programy diagnostyczne oparte na eBPF, kt\u00f3re zazwyczaj znajduj\u0105 si\u0119 w katalogu \/usr\/share\/bcc\/tools. Uruchamiam je bezpo\u015brednio w pow\u0142oce, otrzymuj\u0119 przejrzyste dane wyj\u015bciowe i nie musz\u0119 modyfikowa\u0107 moich aplikacji. Zbi\u00f3r ten obejmuje procesy, wywo\u0142ania systemowe, systemy plik\u00f3w, operacje wej\u015bcia\/wyj\u015bcia blokowego, sie\u0107, harmonogram i profilowanie, dzi\u0119ki czemu nadaje si\u0119 do <strong>wydajne<\/strong> Analizy. Poniewa\u017c celowo w\u0142\u0105czam \u015bledzenie, jego wp\u0142yw jest niewielki, a b\u0142\u0119dy pomiarowe wynikaj\u0105ce z monitorowania s\u0105 niewielkie. W bardziej z\u0142o\u017conych przypadkach uzupe\u0142niam narz\u0119dzia o w\u0142asny eBPF lub dodatkowo stosuj\u0119 profile pr\u00f3bkowania.<\/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\/bcc_tools_linux_eBPF_7438.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Instalacja i wymagania<\/h2>\n<p>Instaluj\u0119 <strong>bcc<\/strong> narz\u0119dzia dost\u0119pne za po\u015brednictwem mened\u017cera pakiet\u00f3w (bcc-tools lub bpfcc-tools) w popularnych dystrybucjach. Wymagane s\u0105: j\u0105dro obs\u0142uguj\u0105ce eBPF (wersja 4.x lub nowsza, najlepiej 4.9+), w\u0142\u0105czone funkcje BPF oraz odpowiednie uprawnienia do \u0142adowania program\u00f3w. W przypadku serwer\u00f3w produkcyjnych sprawdzam najpierw mo\u017cliwo\u015bci j\u0105dra i dystrybucji w zakresie eBPF w \u015brodowisku testowym, aby p\u00f3\u017aniejsze pomiary <strong>niezawodny<\/strong> dzia\u0142aj\u0105. Dzi\u0119ki odpowiednio dostosowanym zasadom zapobiegam stosowaniu profili bezpiecze\u0144stwa, kt\u00f3re ca\u0142kowicie blokuj\u0105 eBPF. Praktyczny przegl\u0105d konfiguracji i obs\u0142ugi zawieraj\u0105 zwi\u0119z\u0142e wskaz\u00f3wki dotycz\u0105ce <a href=\"https:\/\/webhosting.de\/pl\/ebpf-linux-narzedzia-analityczne-monitorowanie-serwerow-spostrzezenia\/\">narz\u0119dzia analityczne eBPF<\/a>.<\/p>\n\n<h2>Przed uruchomieniem: kontrole systemu i bezpiecze\u0144stwa<\/h2>\n<p>Zanim przyst\u0105pi\u0119 do pomiar\u00f3w w \u015brodowisku produkcyjnym, sprawdzam podstawowe mo\u017cliwo\u015bci serwera. Dzi\u0119ki temu unikam nieudanych uruchomie\u0144 i uzyskuj\u0119 powtarzalne wyniki.<\/p>\n<ul>\n  <li>Sprawd\u017a funkcje j\u0105dra: <code>uname -r<\/code> oraz dost\u0119pne funkcje BPF (np. za pomoc\u0105 Feature-Check). Istotne znaczenie maj\u0105 kprobes\/tracepoints, BTF (dla stabilnych informacji o typach) oraz zdarzenia perf.<\/li>\n  <li>Uprawnienia i zasady: Dbam o to, aby tylko uprawnieni u\u017cytkownicy mogli \u0142adowa\u0107 eBPF (CAP_BPF\/CAP_SYS_ADMIN lub odpowiednia zasada) oraz aby profile LSM nie blokowa\u0142y tego procesu.<\/li>\n  <li>Parametry systemu: <code>kernel.unprivileged_bpf_disabled<\/code> jest zazwyczaj aktywne w \u015brodowiskach produkcyjnych. Dlatego \u015bwiadomie pracuj\u0119 w zabezpieczonych sesjach i z wyra\u017anym protoko\u0142em audytowym.<\/li>\n  <li>Przejrzyste \u015bcie\u017cki: Uwa\u017cam, \u017ce katalogi takie jak <code>\/sys\/kernel\/debug\/tracing<\/code> oraz <code>\/sys\/fs\/bpf<\/code> na oku, aby usun\u0105\u0107 artefakty po pomiarach.<\/li>\n<\/ul>\n<p>Dzi\u0119ki tym \u015brodkom higieny mog\u0119 przeprowadza\u0107 pomiary w spos\u00f3b precyzyjny i powtarzalny \u2013 bez efekt\u00f3w ubocznych.<\/p>\n\n<h2>Przewodnik praktyczny: Pierwsze dziesi\u0119\u0107 narz\u0119dzi<\/h2>\n<p>Aby szybko sprawdzi\u0107 wydajno\u015b\u0107, stosuj\u0119 ustalon\u0105 kolejno\u015b\u0107 dzia\u0142a\u0144. Dzi\u0119ki temu mog\u0119 precyzyjnie wyodr\u0119bni\u0107 przyczyny zwi\u0105zane z procesorem, operacjami wej\u015bcia\/wyj\u015bcia lub sieci\u0105 i zdecydowa\u0107, czy nale\u017cy dok\u0142adniej przyjrze\u0107 si\u0119 stosom lub czasom. Tabela przedstawia g\u0142\u00f3wne zadania narz\u0119dzi oraz pytania, na kt\u00f3re staram si\u0119 za ich pomoc\u0105 odpowiedzie\u0107. Na pocz\u0105tku ograniczam czas trwania pomiaru do minimum i powtarzam pomiary, gdy tylko pojawi\u0105 si\u0119 jakiekolwiek podejrzenia <strong>potwierdza\u0107<\/strong> chc\u0119. W ten spos\u00f3b unikam martwych punkt\u00f3w i nie trac\u0119 czasu w nag\u0142ych <strong>Incydenty<\/strong>.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Narz\u0119dzie<\/th>\n      <th>Zaobserwowano<\/th>\n      <th>Typowe pytanie<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>execsnoop<\/td>\n      <td>Nowe procesy<\/td>\n      <td>Kto uruchamia kr\u00f3tkotrwa\u0142e zadania, kt\u00f3re powoduj\u0105 obci\u0105\u017cenie?<\/td>\n    <\/tr>\n    <tr>\n      <td>opensnoop<\/td>\n      <td>Otwieranie plik\u00f3w<\/td>\n      <td>Kt\u00f3re \u015bcie\u017cki s\u0105 stale otwierane lub rejestrowane?<\/td>\n    <\/tr>\n    <tr>\n      <td>ext4slower (xfs*, btrfs*, zfs*)<\/td>\n      <td>Powolne operacje FS<\/td>\n      <td>Kt\u00f3re wywo\u0142ania wykazuj\u0105 du\u017ce op\u00f3\u017anienia w poszczeg\u00f3lnych woluminach?<\/td>\n    <\/tr>\n    <tr>\n      <td>biolatencja<\/td>\n      <td>Rozk\u0142ad operacji wej\u015bcia\/wyj\u015bcia blokowego<\/td>\n      <td>Czy wyst\u0119puj\u0105 sporadyczne lub d\u0142ugotrwa\u0142e skoki op\u00f3\u017anienia?<\/td>\n    <\/tr>\n    <tr>\n      <td>biosnoop<\/td>\n      <td>Pojedyncze \u017c\u0105dania wej\u015bcia\/wyj\u015bcia<\/td>\n      <td>Jaki proces powoduje awari\u0119 niekt\u00f3rych urz\u0105dze\u0144?<\/td>\n    <\/tr>\n    <tr>\n      <td>cachestat<\/td>\n      <td>Zachowanie pami\u0119ci podr\u0119cznej stron<\/td>\n      <td>Czy warto zainstalowa\u0107 wi\u0119cej pami\u0119ci RAM, czy te\u017c aplikacja b\u0119dzie mia\u0142a problemy?<\/td>\n    <\/tr>\n    <tr>\n      <td>tcpconnect<\/td>\n      <td>Nowe po\u0142\u0105czenia TCP<\/td>\n      <td>Kto, jak cz\u0119sto i z jakiej us\u0142ugi korzysta?<\/td>\n    <\/tr>\n    <tr>\n      <td>tcpaccept<\/td>\n      <td>Zatwierdzone po\u0142\u0105czenia<\/td>\n      <td>Kt\u00f3re gniazda serwerowe s\u0105 poddane du\u017cemu obci\u0105\u017ceniu?<\/td>\n    <\/tr>\n    <tr>\n      <td>tcpretrans<\/td>\n      <td>Retransmisje<\/td>\n      <td>Czy utrata paczki wskazuje na niestabilno\u015b\u0107 \u015bcie\u017cek?<\/td>\n    <\/tr>\n    <tr>\n      <td>runqlat<\/td>\n      <td>Op\u00f3\u017anienia harmonogramu<\/td>\n      <td>Czy w\u0105tki czekaj\u0105 zbyt d\u0142ugo na czas procesora?<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n<p>U\u017cywam r\u00f3wnie\u017c <strong>profile<\/strong> w celu wykrywania punkt\u00f3w newralgicznych w przestrzeni u\u017cytkownika lub j\u0105dra oraz agregowania stos\u00f3w wywo\u0142a\u0144. Dzi\u0119ki temu wykrywam kosztowne wyra\u017cenia regularne, nieefektywne sterowniki lub spinlocki, kt\u00f3re nast\u0119pnie eliminuj\u0119 w kodzie lub w konfiguracji. Stosuj\u0119 kr\u00f3tkie interwa\u0142y pr\u00f3bkowania i por\u00f3wnuj\u0119 wyniki kilku przebieg\u00f3w, aby wyeliminowa\u0107 warto\u015bci odstaj\u0105ce <strong>widoczny<\/strong> . To po\u0142\u0105czenie og\u00f3lnego przegl\u0105du i dog\u0142\u0119bnej analizy pozwala mi zaoszcz\u0119dzi\u0107 sporo czasu na analiz\u0119. Nast\u0119pnie ponownie testuj\u0119 optymalizacj\u0119 przy tym samym obci\u0105\u017ceniu.<\/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\/linux-performance-ebpf-tools-4528.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Rozszerzenie: Wy\u015bwietlanie operacji poza procesorem, blokad i czas\u00f3w oczekiwania<\/h2>\n<p>Nie ka\u017cda wysoka latencja wynika z obci\u0105\u017cenia procesora. Cz\u0119sto w\u0105tki \u201epoza procesorem\u201c oczekuj\u0105 na operacje wej\u015bcia\/wyj\u015bcia, blokady lub sygna\u0142y wybudzenia. W takich sytuacjach pomocne s\u0105 dodatkowe narz\u0119dzia i profile bcc:<\/p>\n<ul>\n  <li>Analiza poza procesorem: Mierz\u0119, jak d\u0142ugo w\u0105tki nie znajduj\u0105 si\u0119 na procesorze oraz kt\u00f3re stosy do nich prowadz\u0105. Pozwala to oddzieli\u0107 czas obliczeniowy od czasu oczekiwania i wskaza\u0107 czynniki powoduj\u0105ce blokady.<\/li>\n  <li>Konflikty blokad: Analizuj\u0119 w szczeg\u00f3lno\u015bci krytyczne blokady w j\u0105drze i przestrzeni u\u017cytkownika. D\u0142ugie czasy oczekiwania lub wysokie poziomy konflikt\u00f3w wskazuj\u0105 na punkty szeregowo\u015bci, kt\u00f3re staram si\u0119 wyeliminowa\u0107 (np. poprzez sharding, wi\u0119ksz\u0105 szczeg\u00f3\u0142owo\u015b\u0107 lub inne struktury danych).<\/li>\n  <li>\u015acie\u017cki budzenia: op\u00f3\u017anienia mi\u0119dzy momentem \u201ezosta\u0142 wybudzony\u201c a \u201ezn\u00f3w dzia\u0142a\u201c wskazuj\u0105 na problemy z planowaniem i priorytetami lub zbyt du\u017ce pule proces\u00f3w roboczych.<\/li>\n<\/ul>\n<p>Koreluj\u0119 te sygna\u0142y z <strong>runqlat<\/strong> oraz <strong>biolatencja<\/strong>, aby odr\u00f3\u017cni\u0107 przyczyny zwi\u0105zane z pami\u0119ci\u0105, operacjami wej\u015bcia\/wyj\u015bcia i harmonogramem.<\/p>\n\n<h2>Higiena pomiar\u00f3w: filtry, czas trwania, warto\u015bci progowe<\/h2>\n<p>Aby pomiary eBPF by\u0142y powtarzalne, kieruj\u0119 si\u0119 trzema podstawowymi zasadami:<\/p>\n<ul>\n  <li>Kr\u00f3tko i na temat: na pocz\u0105tku uruchamiam narz\u0119dzia tylko na kr\u00f3tko (np. na 10\u201330 sekund) i skupiam si\u0119 na podejrzanych identyfikatorach PID, kontenerach lub gniazdach.<\/li>\n  <li>Ustawianie prog\u00f3w: W przypadku narz\u0119dzi typu \u201e*slower\u201c odfiltrowuj\u0119 niewielkie op\u00f3\u017anienia, aby zredukowa\u0107 szum i wy\u015bwietla\u0107 wy\u0142\u0105cznie problematyczne wywo\u0142ania.<\/li>\n  <li>Ograniczanie cz\u0119stotliwo\u015bci: Korzystam z filtr\u00f3w selektywnych (np. nazwa procesu, identyfikatory TID, porty), aby utrzyma\u0107 nisk\u0105 cz\u0119stotliwo\u015b\u0107 zdarze\u0144. Dzi\u0119ki temu obci\u0105\u017cenie pozostaje minimalne i unikam utraty zdarze\u0144.<\/li>\n<\/ul>\n<p>Dopiero gdy dostrzeg\u0119 pewien wzorzec, przed\u0142u\u017cam czas trwania lub rozszerzam zakres. Dzi\u0119ki temu uzyskuj\u0119 <strong>czysty<\/strong> oraz wiarygodne pr\u00f3by.<\/p>\n\n<h2>Scenariusz praktyczny 1: Niewyja\u015bnione wysokie obci\u0105\u017cenie procesora<\/h2>\n<p>Je\u015bli wska\u017anik obci\u0105\u017cenia procesora stale wskazuje wysokie warto\u015bci, zaczynam od <strong>execsnoop<\/strong>, aby wykry\u0107 procesy o kr\u00f3tkim czasie trwania. Nast\u0119pnie za pomoc\u0105 runqlat mierz\u0119, jak d\u0142ugo w\u0105tki czekaj\u0105 na czas procesora, i sprawdzam, czy kolejki uruchomie\u0144 s\u0105 przepe\u0142nione lub czy priorytety s\u0105 nieodpowiednio ustawione. Je\u015bli czasy oczekiwania staj\u0105 si\u0119 zauwa\u017calne, zmniejszam liczb\u0119 proces\u00f3w roboczych, zmieniam pule w\u0105tk\u00f3w lub rozk\u0142adam zadania cron, aby harmonogram <strong>chwyt<\/strong> mo\u017ce. Dzi\u0119ki profilom gromadz\u0119 stosy i znajduj\u0119 prawdziwe w\u0105skie gard\u0142a w bibliotekach oraz we w\u0142asnym kodzie. Dopiero po po\u0142\u0105czeniu tych wskaz\u00f3wek podejmuj\u0119 decyzje dotycz\u0105ce limit\u00f3w, zbierania \u015bmieci, powinowactw lub flag kompilatora.<\/p>\n\n<h2>Scenariusz praktyczny 2: Op\u00f3\u017anienia wej\u015bcia\/wyj\u015bcia i powolne aplikacje<\/h2>\n<p>Je\u015bli u\u017cytkownicy skar\u017c\u0105 si\u0119 na zawieszanie si\u0119 systemu przy niskim obci\u0105\u017ceniu procesora, sprawdzam za pomoc\u0105 <strong>ext4 wolniejszy<\/strong> powolne wywo\u0142ania systemu plik\u00f3w na proces. Nast\u0119pnie za pomoc\u0105 biolatency sprawdzam rozk\u0142ad czas\u00f3w operacji wej\u015bcia\/wyj\u015bcia blokowego dla poszczeg\u00f3lnych urz\u0105dze\u0144, aby wykry\u0107 sporadyczne skoki lub trwa\u0142e w\u0105skie gard\u0142a. biosnoop pokazuje mi, czy pojedyncza us\u0142uga generuje nadmiern\u0105 liczb\u0119 drobnych operacji zapisu, powoduj\u0105c w ten spos\u00f3b tworzenie si\u0119 kolejek, kt\u00f3re spowalniaj\u0105 inne procesy. Dzi\u0119ki cachestat widz\u0119, czy pami\u0119\u0107 podr\u0119czna stron dzia\u0142a poprawnie, czy te\u017c wyst\u0119puj\u0105 nieudane operacje <strong>dominowa\u0107<\/strong> i czy wi\u0119cej pami\u0119ci RAM by\u0142oby pomocne. Ostatecznie sam zdecyduj\u0119, czy op\u0142aca si\u0119 stosowa\u0107 zapis wtryskowy, wi\u0119ksze bufory, czy te\u017c przej\u015b\u0107 na szybsz\u0105 pami\u0119\u0107 masow\u0105.<\/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\/tech_office_nachtarbeit_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Scenariusz praktyczny 3: \u015acie\u017cki sieciowe i mikrous\u0142ugi<\/h2>\n<p>W \u015brodowiskach rozproszonych zaczynam od <strong>tcpconnect<\/strong>, aby zmierzy\u0107 nawi\u0105zywanie po\u0142\u0105cze\u0144 mi\u0119dzy us\u0142ugami. Nast\u0119pnie za pomoc\u0105 tcpaccept sprawdzam, kt\u00f3re gniazda serwera maj\u0105 szczeg\u00f3lnie du\u017co po\u0142\u0105cze\u0144 przychodz\u0105cych i czy limity po stronie s\u0142uchacza s\u0105 skuteczne. tcpretrans wykrywa ponowne wysy\u0142anie danych i pozwala odr\u00f3\u017cni\u0107 problemy transportowe od b\u0142\u0119d\u00f3w aplikacji, zanim dostosuj\u0119 limity czasu i liczb\u0119 ponownych pr\u00f3b. Dzi\u0119ki tym trzem sygna\u0142om widz\u0119, czy to sie\u0107, aplikacja czy us\u0142uga nadrz\u0119dna jest przyczyn\u0105 <strong>Op\u00f3\u017anienie<\/strong> nap\u0119dza. Nast\u0119pnie dostosowuj\u0119 strategie backoffu, warto\u015bci keepalive, ustawienia modu\u0142u r\u00f3wnowa\u017cenia obci\u0105\u017cenia oraz rozmiary bufor\u00f3w.<\/p>\n\n<h2>Bezpiecze\u0144stwo eksploatacyjne i niezawodno\u015b\u0107 eBPF<\/h2>\n<p>Pobieram tylko <strong>godny zaufania<\/strong> Najpierw testuj\u0119 w\u0142asne programy eBPF na \u015brodowisku stagingowym. Verifier j\u0105dra blokuje b\u0142\u0119dne programy, ale dodatkowo ustalam limity dla map i bufor\u00f3w, aby pami\u0119\u0107 by\u0142a odpowiednio ograniczona. Zachowuj\u0119 logi, aby \u015bledzi\u0107 zachowanie i skutki uboczne oraz w razie potrzeby m\u00f3c szybko interweniowa\u0107. Zasady okre\u015blaj\u0105, kto mo\u017ce \u0142adowa\u0107 eBPF, dzi\u0119ki czemu kontrola pozostaje w r\u0119kach zespo\u0142u platformy, a wymagania bezpiecze\u0144stwa s\u0105 przestrzegane. Zasady te zapewniaj\u0105, \u017ce \u015bledzenie w \u015brodowiskach produkcyjnych <strong>Niezawodny<\/strong> pozostaje bez zmian i nie przynosi \u017cadnych niespodzianek.<\/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\/entwickler_schreibtisch_tools_4829.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>\u015arodowiska kontenerowe i Kubernetes<\/h2>\n<p>W kontenerach oddzielam problemy o charakterze systemowym od efekt\u00f3w specyficznych dla poszczeg\u00f3lnych pod\u00f3w. W tym celu filtruj\u0119 pomiary wed\u0142ug cgroup, przestrzeni nazw lub zakresu PID. Wiele narz\u0119dzi bcc umo\u017cliwia filtrowanie wed\u0142ug nazw lub identyfikator\u00f3w proces\u00f3w; alternatywnie dokonuj\u0119 pomiar\u00f3w na ho\u015bcie i przypisuj\u0119 zdarzenia do obci\u0105\u017ce\u0144 za pomoc\u0105 cgroup. Wa\u017cne:<\/p>\n<ul>\n  <li>Przestrze\u0144 nazw PID: identyfikatory PID r\u00f3\u017cni\u0105 si\u0119 w przypadku hosta i kontenera. Mapuj\u0119 te identyfikatory lub filtruj\u0119 wed\u0142ug nazw proces\u00f3w\/port\u00f3w.<\/li>\n  <li>Limity zasob\u00f3w: Ograniczanie wydajno\u015bci procesora spowodowane limitami CFS objawia si\u0119 d\u0142ugimi czasami oczekiwania przy braku pe\u0142nego obci\u0105\u017cenia systemu. Rozpoznaj\u0119 to na podstawie <strong>runqlat<\/strong> w po\u0142\u0105czeniu ze wska\u017anikami dotycz\u0105cymi proporcji.<\/li>\n  <li>Przestrzenie nazw sieciowe: Podczas analizy gniazd zwracam uwag\u0119 na w\u0142a\u015bciw\u0105 przestrze\u0144 nazw. Dokonuj\u0119 pomiar\u00f3w na interfejsie hosta i koreluj\u0119 wyniki z adresami IP i portami pod\u00f3w.<\/li>\n<\/ul>\n<p>Dzi\u0119ki temu wyniki pomiar\u00f3w pozostaj\u0105 miarodajne, nawet je\u015bli wiele obci\u0105\u017ce\u0144 dzia\u0142a w bliskim s\u0105siedztwie.<\/p>\n\n<h2>Integracja ze stosami rozwi\u0105za\u0144 do monitorowania<\/h2>\n<p>Nie zamierzam rezygnowa\u0107 z monitoringu, tylko uzupe\u0142niam go o <strong>eBPF<\/strong>. Narz\u0119dzia bcc zapewniaj\u0105 mi wgl\u0105d w szczeg\u00f3\u0142y, podczas gdy systemy metryczne, logi i APM pokazuj\u0105 szerszy obraz; razem tworz\u0105 sp\u00f3jny obraz sytuacji. W razie potrzeby kieruj\u0119 \u015blady z bcc do potok\u00f3w log\u00f3w, uruchamiam migawki w przypadku incydent\u00f3w i dokumentuj\u0119 ustalenia w zespole. W przypadku profil\u00f3w punktowych korzystam z pr\u00f3bkowania jako uzupe\u0142nienia osi czasu opartych na metrykach, aby wykrywa\u0107 anomalie <strong>namacalny<\/strong> zostan\u0105. Ci, kt\u00f3rzy dodatkowo preferuj\u0105 skrypty, znajd\u0105 w <a href=\"https:\/\/webhosting.de\/pl\/bpftrace-szybsze-wykrywanie-problemow-z-serwerem-hostingowym-i-diagnoza\/\">bpftrace w hostingu<\/a> prosta metoda udzielania odpowiedzi na pytania ad hoc za pomoc\u0105 mini-skrypt\u00f3w.<\/p>\n\n<h2>Typowe przeszkody \u2013 i jak je pokonuj\u0119<\/h2>\n<ul>\n  <li>Noisy Neighbor: Poszczeg\u00f3lne zadania generuj\u0105 kr\u00f3tkotrwa\u0142e, ale intensywne obci\u0105\u017cenie. <strong>execsnoop<\/strong> plus <strong>profile<\/strong> niezawodnie wykrywam te wzorce; wyznaczam im limity czasowe lub izoluj\u0119 je za pomoc\u0105 wsp\u00f3\u0142czynnik\u00f3w.<\/li>\n  <li>NUMA i powi\u0105zania: Wysokie op\u00f3\u017anienia pomimo wolnych rdzeni wskazuj\u0105 na dost\u0119py mi\u0119dzy strefami NUMA. Sprawdzam powi\u0105zania procesora, przypisanie pami\u0119ci oraz rozk\u0142ad IRQ.<\/li>\n  <li>Punkty newralgiczne IRQ\/SoftIRQ: Obci\u0105\u017cenie sieciowe mo\u017ce doprowadzi\u0107 do nasycenia j\u0105dra przez proces ksoftirqd. Obserwuj\u0119 retransmisje, rozdzielam sygna\u0142y IRQ za pomoc\u0105 RSS\/kolejek oraz dostosowuj\u0119 RPS\/XPS.<\/li>\n  <li>Efekty zwi\u0105zane z pami\u0119ci\u0105 podr\u0119czn\u0105 stron: uruchomienia \u201ena zimno\u201d przebiegaj\u0105 wolniej. Uwzgl\u0119dniam fazy rozgrzewania i por\u00f3wnuj\u0119 <strong>cachestat<\/strong>-Warto\u015bci przed i po obci\u0105\u017ceniu.<\/li>\n  <li>Aktualizacje j\u0105dra: Kprobes mog\u0105 ulega\u0107 zmianom przy przej\u015bciu na now\u0105 wersj\u0119. Preferuj\u0119 stabilne punkty \u015bledzenia, przeprowadzam wcze\u015bniejsze testy i przygotowuj\u0119 minimalny zestaw.<\/li>\n<\/ul>\n\n<h2>Sprawdzone procedury robocze<\/h2>\n<ul>\n  <li>Zrzut stanu zdarzenia: 60\u2013120 sekund \u0142\u0105cznego dzia\u0142ania (execsnoop, runqlat, biolatency, tcpretrans, profile). Nast\u0119pnie skupiam si\u0119 na podsystemie, kt\u00f3ry wzbudzi\u0142 moje zainteresowanie.<\/li>\n  <li>Procedura bazowa: cotygodniowe kr\u00f3tkie pomiary na kluczowych \u015bcie\u017ckach (np. profil pami\u0119ci masowej i sieci). Dzi\u0119ki temu mog\u0119 wcze\u015bnie wykrywa\u0107 odchylenia.<\/li>\n  <li>Weryfikacja zmian: Przed wprowadzeniem zmian w konfiguracji i po ich wprowadzeniu por\u00f3wnuj\u0119 te same punkty pomiarowe, aby m\u00f3c oszacowa\u0107 efekt w spos\u00f3b ilo\u015bciowy.<\/li>\n<\/ul>\n\n<h2>Ci\u0105g\u0142e optymalizowanie wydajno\u015bci systemu Linux<\/h2>\n<p>Traktuj\u0119 performans jako ci\u0105g\u0142y proces, a nie jako <strong>Dzia\u0142anie jednorazowe<\/strong>. W ramach CI\/CD wdra\u017cam kr\u00f3tkie testy oparte na eBPF, aby wcze\u015bnie wykrywa\u0107 regresje i zapobiega\u0107 im przed wdro\u017ceniem. W oknach serwisowych mierz\u0119 typowe \u015bcie\u017cki pod obci\u0105\u017ceniem, tworz\u0119 warto\u015bci bazowe i dokumentuj\u0119 dopuszczalne zakresy op\u00f3\u017anie\u0144. Dzi\u0119ki temu szybko wykrywam odchylenia i unikam zgadywania podczas obs\u0142ugi incydent\u00f3w, poniewa\u017c dane por\u00f3wnawcze <strong>dost\u0119pny<\/strong>. Procedura ta ma bezpo\u015bredni wp\u0142yw na dost\u0119pno\u015b\u0107, kontrol\u0119 koszt\u00f3w i komfort u\u017cytkowania.<\/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\/bcc-tools-leitfaden-4956.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Mini-studium przypadku: Od objawu do przyczyny w 12 minut<\/h2>\n<p>Klaster API zg\u0142asza wzrost op\u00f3\u017anie\u0144 99p przy niezmienionej warto\u015bci RPS. Tworz\u0119 migawk\u0119 zdarzenia: <strong>tcpconnect<\/strong> nie wykazuje \u017cadnych nieprawid\u0142owo\u015bci podczas nawi\u0105zywania po\u0142\u0105czenia, <strong>tcpretrans<\/strong> pozostaje na niskim poziomie \u2013 sie\u0107 raczej nie. <strong>runqlat<\/strong> informuje o kr\u00f3tkich, ale cz\u0119stych czasach oczekiwania; <strong>profile<\/strong> wy\u015bwietla punkty aktywno\u015bci w formacie JSON. R\u00f3wnolegle obserwuj\u0119 za pomoc\u0105 <strong>cachestat<\/strong> spadek wska\u017anika trafie\u0144 w pami\u0119ci podr\u0119cznej w okresach szczytowego obci\u0105\u017cenia. Korelacja sugeruje: wiele ma\u0142ych \u0142adunk\u00f3w, kt\u00f3re s\u0105 synchronicznie serializowane i natychmiast zapisywane.<\/p>\n<p>Sprawdzam za pomoc\u0105 <strong>ext4 wolniejszy<\/strong>, co wskazuje na operacje fsync trwaj\u0105ce kilka milisekund na tym samym woluminie dla procesu API; <strong>biolatencja<\/strong> Potwierdzono sporadyczne skoki d\u0142ugo\u015bci kolejki na danym urz\u0105dzeniu. \u015arodek zaradczy: grupowanie operacji zapisu, wi\u0119kszy bufor oraz asynchroniczne opr\u00f3\u017cnianie w mniej wra\u017cliwych punktach. Po wdro\u017ceniu op\u00f3\u017anienia 99p spadaj\u0105 o 35 %, wska\u017anik trafie\u0144 w pami\u0119ci podr\u0119cznej wraca do normy, a <strong>runqlat<\/strong> ponownie wykazuje w\u0105skie rozk\u0142ady.<\/p>\n\n<h2>Podsumowanie dla praktyki<\/h2>\n<p>Z <strong>bcc<\/strong> Dzi\u0119ki narz\u0119dziom i eBPF w kr\u00f3tkim czasie uzyskuj\u0119 jasny obraz sytuacji dotycz\u0105cej procesora, operacji wej\u015bcia\/wyj\u015bcia i sieci, bez konieczno\u015bci wprowadzania zmian w aplikacjach. Lista narz\u0119dzi obejmuj\u0105ca execsnoop, opensnoop, ext4slower, biolatency, biosnoop, cachestat, tcpconnect, tcpaccept, tcpretrans i runqlat stanowi sp\u00f3jny punkt wyj\u015bcia. Dodatkowo wykorzystuj\u0119 profile, aby zidentyfikowa\u0107 w\u0105skie gard\u0142a i zoptymalizowa\u0107 \u015bcie\u017cki kodu. Dzi\u0119ki przejrzystym zasadom, logowaniu i limitom wdra\u017canie w j\u0105drze przebiega bez problem\u00f3w. <strong>bezpieczny<\/strong> i przejrzysta. Kto konsekwentnie stosuje t\u0119 metod\u0119, szybciej rozwi\u0105zuje problemy zwi\u0105zane z wydajno\u015bci\u0105, lepiej planuje moce produkcyjne i obni\u017ca koszty w przeliczeniu na jedno zg\u0142oszenie.<\/p>","protected":false},"excerpt":{"rendered":"<p>Dowiedz si\u0119, jak profesjonalnie analizowa\u0107 i optymalizowa\u0107 wydajno\u015b\u0107 systemu Linux za pomoc\u0105 narz\u0119dzi bcc i eBPF. Niniejszy przewodnik przedstawia praktyczne podej\u015bcie do in\u017cynierii wydajno\u015bci, skupiaj\u0105c si\u0119 na narz\u0119dziach bcc.<\/p>","protected":false},"author":1,"featured_media":20675,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[922],"tags":[],"class_list":["post-20682","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie"],"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":"131","_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":"bcc tools","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":"20675","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20682","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=20682"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20682\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/20675"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=20682"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=20682"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=20682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}