{"id":20348,"date":"2026-08-05T11:52:51","date_gmt":"2026-08-05T09:52:51","guid":{"rendered":"https:\/\/webhosting.de\/tcp-bbr-congestion-control-webserver-optimierung-bandbreite\/"},"modified":"2026-08-05T11:52:51","modified_gmt":"2026-08-05T09:52:51","slug":"tcp-bbr-kontrola-przeciazenia-optymalizacja-serwera-www-przepustowosc","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/tcp-bbr-congestion-control-webserver-optimierung-bandbreite\/","title":{"rendered":"TCP BBR: nowoczesna kontrola przeci\u0105\u017cenia zapewniaj\u0105ca szybsze dzia\u0142anie serwer\u00f3w internetowych"},"content":{"rendered":"<p>TCP BBR przyspiesza dzia\u0142anie serwer\u00f3w internetowych poprzez modelowanie dost\u0119pnej przepustowo\u015bci i minimalnego czasu RTT oraz dynamiczne dostosowywanie przep\u0142ywu danych. Korzystam z <strong>TCP BBR<\/strong> w celu po\u0142\u0105czenia wysokiego obci\u0105\u017cenia z niskim op\u00f3\u017anieniem oraz zauwa\u017calnego skr\u00f3cenia czasu \u0142adowania przy rzeczywistym obci\u0105\u017ceniu.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<ul>\n  <li><strong>Oparte na modelu<\/strong>: BBR reguluje przepustowo\u015b\u0107 na podstawie szeroko\u015bci pasma i minimalnego czasu RTT, a nie na podstawie strat.<\/li>\n  <li><strong>Mniejsze op\u00f3\u017anienia<\/strong>: Aktywne regulowanie tempa pozwala utrzyma\u0107 kr\u00f3tkie kolejki i kr\u00f3tkie czasy reakcji.<\/li>\n  <li><strong>Wi\u0119ksza przepustowo\u015b\u0107<\/strong>: Wysoka szybko\u015b\u0107 transmisji przy r\u00f3wnomiernym profilu nadawania.<\/li>\n  <li><strong>HTTP\/2\/3<\/strong>: Multipleksowanie korzysta z kr\u00f3tkich kolejek i niewielkiego jittera.<\/li>\n  <li><strong>Obs\u0142uga systemu Linux<\/strong>: Od wersji j\u0105dra 4.9 mo\u017cna to \u0142atwo w\u0142\u0105czy\u0107 i dobrze zmierzy\u0107.<\/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\/tcp-rechenzentrum-4392.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Czym jest TCP BBR? Kr\u00f3tkie om\u00f3wienie podstaw<\/h2>\n\n<p>Korzystam z algorytmu BBR do kontroli przeci\u0105\u017cenia, kt\u00f3ry <strong>Przepustowo\u015b\u0107 w\u0105skiego gard\u0142a<\/strong> (BtlBw) oraz szacuje minimalny czas propagacji w obie strony (RTprop), aby utrzyma\u0107 odpowiedni\u0105 ilo\u015b\u0107 danych w ruchu. Zamiast czeka\u0107 na utrat\u0119 pakiet\u00f3w, BBR na bie\u017c\u0105co mierzy szybko\u015bci dostarczania i aktualizuje sw\u00f3j model \u015bcie\u017cki w kr\u00f3tkich cyklach. Na tej podstawie skutecznie obliczam iloczyn przepustowo\u015bci i op\u00f3\u017anienia (Bandwidth-Delay-Product), czyli ile bajt\u00f3w powinno jednocze\u015bnie znajdowa\u0107 si\u0119 w drodze, aby w pe\u0142ni wykorzysta\u0107 \u0142\u0105cze bez tworzenia si\u0119 zbyt d\u0142ugich kolejek. Wynik ten ma bezpo\u015bredni wp\u0142yw na dane przesy\u0142ane w trakcie lotu oraz na tempo wysy\u0142ania, dzi\u0119ki czemu pakiety s\u0105 wysy\u0142ane w r\u00f3wnych odst\u0119pach czasu z pr\u0119dko\u015bci\u0105 docelow\u0105. W ten spos\u00f3b w typowych \u015brodowiskach internetowych osi\u0105gam wysokie wykorzystanie przepustowo\u015bci, kr\u00f3tkie kolejki i bardziej niezawodne czasy odpowiedzi dzi\u0119ki <strong>ni\u017cszy<\/strong> Wariancja.<\/p>\n\n<h2>BBR kontra CUBIC: Dlaczego zmienia si\u0119 zachowanie<\/h2>\n\n<p>W przeciwie\u0144stwie do modeli CUBIC czy Reno, model BBR nie traktuje strat jako g\u0142\u00f3wnego sygna\u0142u steruj\u0105cego, lecz opiera si\u0119 na <strong>modele<\/strong> Cel operacyjny zbli\u017cony do optymalnego po\u0142\u0105czenia przepustowo\u015bci i op\u00f3\u017anienia. Metody oparte na stratach cz\u0119sto wype\u0142niaj\u0105 du\u017ce bufory, co sprzyja skokom op\u00f3\u017anie\u0144 i zjawisku \u201ebufferbloat\u201c, podczas gdy BBR z aktywnym regulowaniem tempa dostosowuje zawarto\u015b\u0107 bufora do BDP. Dlatego te\u017c w przypadku obci\u0105\u017ce\u0144 HTTP z wieloma r\u00f3wnolegle otwartymi po\u0142\u0105czeniami obserwuj\u0119 bardziej p\u0142ynn\u0105 szybko\u015b\u0107 dostarczania danych i kr\u00f3tszy czas TTFB. Nawet na d\u0142ugich trasach o wysokim RTT BBR zazwyczaj utrzymuje kr\u00f3tsze kolejki, poniewa\u017c algorytm dzia\u0142a precyzyjnie na progu RTprop. Podczas gdy CUBIC cyklicznie przekracza limit i spowalnia z powodu strat, BBR d\u0105\u017cy do stabilnego punktu z <strong>ma\u0142e<\/strong> Wahania.<\/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\/tcp_bbr_besprechung_webserver_2847.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Tak wygl\u0105da praca wewn\u0119trzna BBR: stany i cykle<\/h2>\n\n<p>Na pocz\u0105tku BBR znacznie zwi\u0119ksza moc nadawcz\u0105 podczas uruchamiania, a\u017c do momentu, gdy zmierzona szybko\u015b\u0107 transmisji ustabilizuje si\u0119 i ujawni si\u0119 w\u0105skie gard\u0142o, co powoduje, \u017ce <strong>BtlBw<\/strong>-szacunek zostaje doprecyzowany. Nast\u0119pnie nast\u0119puje faza \u201eDrain\u201d, w kt\u00f3rej algorytm zmniejsza liczb\u0119 samolot\u00f3w w powietrzu, aby opr\u00f3\u017cni\u0107 nadmiernie zape\u0142nione kolejki i osi\u0105gn\u0105\u0107 stan zbli\u017cony do BDP. W trybie ci\u0105g\u0142ym ProbeBW wykorzystuje cykliczny plan wzmocnienia (Gain-Plan), wysy\u0142aj\u0105c na kr\u00f3tko nieco powy\u017cej oszacowania, a nast\u0119pnie poni\u017cej, aby znale\u017a\u0107 nowe warto\u015bci maksymalne. ProbeRTT regularnie wymusza niewielk\u0105 ilo\u015b\u0107 danych przesy\u0142anych w trakcie lotu, aby uzyska\u0107 aktualne warto\u015bci minimalnego RTT i unikn\u0105\u0107 dryfu. Ta sekwencja utrzymuje \u0142\u0105cze w pe\u0142ni zaj\u0119te, nie zape\u0142niaj\u0105c nadmiernie kolejek, co <strong>Op\u00f3\u017anienie<\/strong> i mo\u017ce w widoczny spos\u00f3b ograniczy\u0107 jitter.<\/p>\n\n<h2>Konkretne skutki dla serwer\u00f3w internetowych i interfejs\u00f3w API<\/h2>\n\n<p>W \u015brodowiskach internetowych zmniejszam op\u00f3\u017anienia przy du\u017cym obci\u0105\u017ceniu za pomoc\u0105 BBR, poniewa\u017c dane przesy\u0142ane w trakcie i regulacja tempa pozwalaj\u0105 utrzyma\u0107 kolejki na niskim poziomie, a czas do pierwszego bajtu ulega skr\u00f3ceniu, zw\u0142aszcza w przypadku wielu jednoczesnych \u017c\u0105da\u0144 z <strong>\u015bredniej wielko\u015bci<\/strong> Odpowiedzi. Du\u017ce pliki do pobrania i obci\u0105\u017cenia zwi\u0105zane ze streamingiem zyskuj\u0105 dzi\u0119ki wysokiej szybko\u015bci transmisji, kt\u00f3ra szybciej si\u0119 stabilizuje nawet przy zmiennych \u015bcie\u017ckach. Protok\u00f3\u0142 HTTP\/2 multipleksuje kilka strumieni na jedno po\u0142\u0105czenie, dlatego r\u00f3wnomierna kontrola przeci\u0105\u017cenia natychmiast oddzia\u0142uje na wszystkie podstrumienie. W przypadku protoko\u0142u HTTP\/3 opartego na QUIC obowi\u0105zuj\u0105 podobne zasady, poniewa\u017c wiele implementacji r\u00f3wnie\u017c modeluje przepustowo\u015b\u0107 i czas RTT. Osoby, kt\u00f3re chc\u0105 g\u0142\u0119biej zrozumie\u0107 r\u00f3\u017cnice, mog\u0105 przeczyta\u0107 m\u00f3j kr\u00f3tki <a href=\"https:\/\/webhosting.de\/pl\/porownanie-wplywu-kontroli-przeciazenia-protokolu-tcp-na-opoznienia\/\">Por\u00f3wnanie op\u00f3\u017anie\u0144<\/a> mi\u0119dzy procedurami, zwracaj\u0105c przy tym uwag\u0119 na zachowanie p95 i p99 w ramach <strong>Ci\u015bnienie<\/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\/tcp-bbr-speedy-web-servers-3548.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Uczciwo\u015b\u0107, skutki uboczne i na co zwracam uwag\u0119<\/h2>\n\n<p>W \u015brodowiskach mieszanych BBR mo\u017ce wydawa\u0107 si\u0119 bardziej dominuj\u0105cy w por\u00f3wnaniu z przep\u0142ywami opartymi na stratach, zw\u0142aszcza gdy bufory s\u0105 g\u0142\u0119bokie, a <strong>Rozpoznanie<\/strong> odbywa si\u0119 dynamicznie. Dlatego podczas migracji obserwuj\u0119 podzia\u0142 przepustowo\u015bci mi\u0119dzy strumieniami CUBIC i BBR i w razie potrzeby wprowadzam korekty. Nieodpowiednio dobrane parametry i niew\u0142a\u015bciwe buforowanie mog\u0105 w szczeg\u00f3lnych przypadkach zwi\u0119ksza\u0107 op\u00f3\u017anienie i wahania, mimo \u017ce przepustowo\u015b\u0107 pozostaje wysoka. Monitorowanie powinno zatem jednocze\u015bnie ocenia\u0107 szybko\u015b\u0107 dostarczania, przedzia\u0142y RTT oraz op\u00f3\u017anienia ogonowe, a nie tylko megabity na sekund\u0119. Kto zauwa\u017cy problemy z sprawiedliwo\u015bci\u0105, powinien przetestowa\u0107 warianty BBRv2 lub ograniczy\u0107 <strong>Wzmocnienie<\/strong>- umiarkowane szczyty.<\/p>\n\n<h2>W\u0142\u0105czanie TCP BBR w systemie Linux<\/h2>\n\n<p>W nowoczesnych j\u0105drach Linuksa od wersji 4.9 w\u0142\u0105czam BBR bez wi\u0119kszego wysi\u0142ku, sprawdzam dost\u0119pne algorytmy za pomoc\u0105 \u201enet.ipv4.tcp_available_congestion_control\u201c i w razie potrzeby \u0142aduj\u0119 modu\u0142 \u201etcp_bbr\u201c, a nast\u0119pnie ustawiam \u201enet.ipv4.tcp_congestion_control = bbr\u201c oraz aktywuj\u0119 \u201efq\u201c jako domy\u015blny Qdisc, aby zapewni\u0107 p\u0142ynne <strong>Pacing<\/strong> zapisa\u0107. Na sta\u0142e zapisuj\u0119 te warto\u015bci w konfiguracjach sysctl i po ponownym uruchomieniu sprawdzam, czy j\u0105dro je przejmuje. W przypadku protoko\u0142u HTTP\/2 cz\u0119sto obni\u017cam warto\u015b\u0107 \u201enet.ipv4.tcp_notsent_lowat\u201c, aby priorytetyzacja i regulacja przepustowo\u015bci zacz\u0119\u0142y dzia\u0142a\u0107 szybko, bez gromadzenia ogromnych ilo\u015bci niewys\u0142anych danych. Ponadto uwzgl\u0119dniam funkcje odci\u0105\u017cania kart sieciowych (NIC) i ustawiam timery regulacji przepustowo\u015bci na wystarczaj\u0105co kr\u00f3tkie, aby docelowa przepustowo\u015b\u0107 pozostawa\u0142a stabilna w kr\u00f3tkich odst\u0119pach czasu. Kto chce jeszcze bardziej zwi\u0119kszy\u0107 przepustowo\u015b\u0107 end-to-end, powinien dodatkowo wzi\u0105\u0107 pod uwag\u0119 <a href=\"https:\/\/webhosting.de\/pl\/serwer-tcp-skalowanie-okna-optymalizacja-przepustowosci-dostrajanie-sieci\/\">Skalowanie okna TCP<\/a> dla produkt\u00f3w o du\u017cej szeroko\u015bci pasma i d\u0142ugim czasie propagacji w <strong>Ruch dalekobie\u017cny<\/strong>.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Prze\u0142\u0105cznik\/modu\u0142<\/th>\n      <th>Cel<\/th>\n      <th>Warto\u015b\u0107 typowa<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>net.ipv4.tcp_congestion_control<\/td>\n      <td>Aktywny algorytm dla protoko\u0142u TCP<\/td>\n      <td>bbr<\/td>\n    <\/tr>\n    <tr>\n      <td>net.core.default_qdisc<\/td>\n      <td>Dyscyplina kolejkowania sprzyjaj\u0105ca tempu pracy<\/td>\n      <td>fq<\/td>\n    <\/tr>\n    <tr>\n      <td>tcp_bbr (modu\u0142 j\u0105dra)<\/td>\n      <td>Pobierz implementacj\u0119 BBR<\/td>\n      <td>modprobe tcp_bbr<\/td>\n    <\/tr>\n    <tr>\n      <td>net.ipv4.tcp_notsent_lowat<\/td>\n      <td>Ograniczanie liczby niewys\u0142anych bajt\u00f3w<\/td>\n      <td>np. 16 KB<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Optymalizacja serwer\u00f3w WWW: Nginx, Apache i ustalanie priorytet\u00f3w<\/h2>\n\n<p>\u0141\u0105cz\u0119 BBR z \u201efq\u201c, rozs\u0105dnie ustalam priorytety strumieni HTTP\/2 i utrzymuj\u0119 ma\u0142e bufory wyj\u015bciowe, aby <strong>Serwer<\/strong>-Odpowied\u017a pojawia si\u0119 szybko na kanale. W Nginx stosuj\u0119 umiarkowane strategie sendfile i tcp_nodelay, kt\u00f3re wsp\u00f3\u0142graj\u0105 z Pacingiem, a r\u00f3wnolegle testuj\u0119 rozmiary rekord\u00f3w TLS pod k\u0105tem efekt\u00f3w segmentacji. Apache r\u00f3wnie\u017c korzysta z niewielkich rozmiar\u00f3w bufor\u00f3w, prawid\u0142owego dzia\u0142ania keepalive oraz spokojnego wzorca zapisu, kt\u00f3ry nie zak\u0142\u00f3ca docelowej szybko\u015bci BBR. W przypadku nawi\u0105zywania po\u0142\u0105czenia i pierwszych bajt\u00f3w mog\u0119 <a href=\"https:\/\/webhosting.de\/pl\/szybkie-otwarcie-polaczenia-tcp-zmniejszone-opoznienia-hosting-optymalizacja-sieci-predkosc\/\">Szybkie otwarcie TCP<\/a> wykorzysta\u0107 w celu skr\u00f3cenia czasu TTFB w odpowiednich scenariuszach. Hierarchie pami\u0119ci podr\u0119cznej obs\u0142uguj\u0105 szczyty obci\u0105\u017cenia, podczas gdy BBR efektywnie wykorzystuje dost\u0119pn\u0105 przepustowo\u015b\u0107 i <strong>Op\u00f3\u017anienie<\/strong> utrzymuje w ruchu.<\/p>\n\n<h2>HTTP\/2 i HTTP\/3: multipleksowanie spotyka si\u0119 z regulacj\u0105 tempa<\/h2>\n\n<p>W wyniku multipleksowania zator w po\u0142\u0105czeniu TCP natychmiast powoduje op\u00f3\u017anienia dla wszystkich strumieni, dlatego te\u017c kontrolowane <strong>Pacing<\/strong> jest tak cenny. BBR zapewnia w tym przypadku r\u00f3wnomiern\u0105 szybko\u015b\u0107, co pozwala ograniczy\u0107 eskalacj\u0119 op\u00f3\u017anie\u0144 typu \u201ehead-of-line\u201d. W przypadku HTTP\/3 stosy QUIC przenosz\u0105 sterowanie do przestrzeni u\u017cytkownika, jednak wiele z nich wykorzystuje podobne koncepcje pomiarowe i modelowe. W przypadku implementacji QUIC sprawdzam parametry szacowania przepustowo\u015bci i limit\u00f3w czasu bezczynno\u015bci, aby modele \u015bcie\u017cek pozostawa\u0142y aktualne. Kto \u0142\u0105czy protoko\u0142y, ten dokonuje pomiar\u00f3w oddzielnie dla ka\u017cdej rodziny protoko\u0142\u00f3w, aby unikn\u0105\u0107 zak\u0142\u00f3ce\u0144 i specyficznych <strong>Strojenie<\/strong>-Uwidocznienie potrzeb.<\/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\/tcp_bbr_webserver_3052.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Warianty BBR: wersja 1 a wersja 2 w praktyce<\/h2>\n\n<p>W praktyce rozr\u00f3\u017cniam BBRv1 (wczesne generacje j\u0105dra) i BBRv2 (nowsze wersje przeniesione z p\u00f3\u017aniejszych wyda\u0144 oraz ga\u0142\u0119zie g\u0142\u00f3wne). BBRv2 lepiej reaguje na utraty i sygna\u0142y o zatorach, a w warunkach konkurencji zbli\u017ca si\u0119 <strong>bardziej sprawiedliwy<\/strong> do CUBIC i bardziej agresywnie zmniejsza ilo\u015b\u0107 danych w tranzycie, gdy \u015bcie\u017cka wykazuje obci\u0105\u017cenie. W przypadku \u015bcie\u017cek z kontrol\u0105 przepustowo\u015bci lub losowymi utratami v2 cz\u0119sto zachowuje wi\u0119ksz\u0105 stabilno\u015b\u0107, poniewa\u017c szczyty sondowania s\u0105 dozowane w bardziej ukierunkowany spos\u00f3b. Je\u015bli zauwa\u017c\u0119 nadmiern\u0105 dominacj\u0119 w stosunku do przep\u0142yw\u00f3w opartych na stratach, najpierw testuj\u0119 warianty v2, zanim r\u0119cznie dostosuj\u0119 parametry wzmocnienia. W centrach danych o jednorodnych \u015bcie\u017ckach i jasno okre\u015blonych SLO wersja v1 nadal dzia\u0142a dobrze; w mieszanych \u015brodowiskach WAN spodziewam si\u0119, \u017ce wersja v2 zapewni <strong>\u0142agodniejsze<\/strong> Wsp\u00f3\u0142istnienie.<\/p>\n\n<h2>ECN, AQM i dyscypliny zwi\u0105zane z kolejkami: zrozumienie wzajemnych powi\u0105za\u0144<\/h2>\n\n<p>Lubi\u0119 stosowa\u0107 BBR razem z \u201efq\u201c na ho\u015bcie, poniewa\u017c zegar regulacji przep\u0142ywu na poziomie poszczeg\u00f3lnych strumieni dzia\u0142a stabilnie. Na routerach znajduj\u0105cych si\u0119 przed nim, tam gdzie to mo\u017cliwe, stosuj\u0119 Active Queue Management (np. CoDel\/PIE), aby ograniczy\u0107 zalegaj\u0105ce kolejki. Je\u015bli infrastruktura obs\u0142uguje ECN, BBRv2 mo\u017ce wykorzysta\u0107 te sygna\u0142y i zmniejszy\u0107 liczb\u0119 pakiet\u00f3w w tranzycie bez czekania na utraty twarde. Wa\u017cna jest poprawna konfiguracja typu end-to-end: P\u00f3\u0142\u015brodkowa aktywacja ECN lub asymetryczne \u015bcie\u017cki generuj\u0105 sprzeczne sygna\u0142y i zwi\u0119kszaj\u0105 wahania op\u00f3\u017anie\u0144. Dlatego sprawdzam, czy \u015bcie\u017cki przepuszczaj\u0105 pakiety ECN, i por\u00f3wnuj\u0119 zakresy op\u00f3\u017anie\u0144 przy identycznym obci\u0105\u017ceniu z w\u0142\u0105czonym i wy\u0142\u0105czonym ECN. Na serwerze \u201efq\u201c pozostaje moim domy\u015blnym Qdisc; \u201efq_codel\u201c stosuj\u0119 celowo w w\u0105skich gard\u0142ach, gdzie aktywna logika AQM ma zatrzymywa\u0107 pakiety na kr\u00f3tko i wspiera\u0107 sprawiedliwo\u015b\u0107 przep\u0142ywu poza tempem hosta.<\/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\/tcpbbr-techoffice-6298.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Offload, liczniki czasu i obci\u0105\u017cenie procesora: prawid\u0142owe roz\u0142o\u017cenie obci\u0105\u017cenia w praktyce<\/h2>\n\n<p>Pacing wymaga precyzyjnego sterowania czasem. Dlatego ustawiam timery pacingowe z odpowiedni\u0105 dok\u0142adno\u015bci\u0105 i sprawdzam, czy karta sieciowa obs\u0142uguje funkcj\u0119 Multiqueue oraz czy sygna\u0142y IRQ i kolejki s\u0105 odpowiednio rozdzielone mi\u0119dzy rdzenie procesora. GSO\/TSO\/GRO pozostaj\u0105 <strong>aktywny<\/strong>, BBR mimo to dzia\u0142a poprawnie, poniewa\u017c \u201efq\u201c rozk\u0142ada du\u017ce segmenty w czasie. Problemem s\u0105 jednak zbyt grube kwanty czasowe, kt\u00f3re prowadz\u0105 do wyst\u0105pienia impuls\u00f3w, lub silne \u0142\u0105czenie w karcie sieciowej, kt\u00f3re powoduje wahania. Nie wy\u0142\u0105czam funkcji offloadingu z g\u00f3ry, lecz sprawdzam, czy zak\u0142\u00f3caj\u0105 one docelow\u0105 szybko\u015b\u0107 transmisji. Przy du\u017cym obci\u0105\u017ceniu po\u0142\u0105cze\u0144 zwracam uwag\u0119 na koszt procesora zwi\u0105zany z regulacj\u0105 tempa: wiele ma\u0142ych zdarze\u0144 wysy\u0142ania zwi\u0119ksza warto\u015b\u0107 PPS. Korzystam z XPS\/RPS, stosuj\u0119 irqbalance lub sta\u0142e powinowactwa, aby zachowa\u0107 lokalno\u015b\u0107 pami\u0119ci podr\u0119cznej, oraz obserwuj\u0119 szczyty \u201esoftirq\u201c. Je\u015bli host jest ograniczony przez procesor, przechodz\u0119 na nieco wi\u0119ksze rekordy TLS i grupuj\u0119 operacje zapisu, nie zmieniaj\u0105c <strong>Czas reakcji<\/strong> pogorszy\u0107 dzia\u0142anie aplikacji.<\/p>\n\n<h2>Kontenery, Kubernetes i \u015brodowiska chmurowe<\/h2>\n\n<p>W Kubernetesie steruj\u0119 BBR i Qdiscami <strong>w ca\u0142ej sieci<\/strong>. Lokalne dla pod\u00f3w regu\u0142y \u201etc\u201c zaczynaj\u0105 obowi\u0105zywa\u0107 dopiero wtedy, gdy korzysta z nich urz\u0105dzenie bazowe; w przypadku par veth musz\u0119 wybra\u0107 w\u0142a\u015bciw\u0105 stron\u0119. Pody typu \u201ehostNetwork\u201c czerpi\u0105 bezpo\u015brednie korzy\u015bci z Qdisc hosta. W konfiguracjach wielodost\u0119pnych BBR koliduje z policerami ruchu wychodz\u0105cego lub kszta\u0142townikami ruchu, kt\u00f3re ograniczaj\u0105 wielko\u015b\u0107 impuls\u00f3w. Dlatego sprawdzam limity przepustowo\u015bci instancji w chmurze (np. dla poszczeg\u00f3lnych typ\u00f3w kart sieciowych) i obserwuj\u0119, czy szczytowe warto\u015bci pr\u00f3bkowania BBR koliduj\u0105 z policerami i wyzwalaj\u0105 retransmisje. Load balancery i serwery proxy segmentuj\u0105 po\u0142\u0105czenia; w ka\u017cdym przypadku sprawdzam po stronie serwera stos TCP za ostatnim przeskokiem, poniewa\u017c to w\u0142a\u015bnie tam faktycznie dzia\u0142a kontrola przeci\u0105\u017cenia. \u015acie\u017cki mi\u0119dzy strefami dost\u0119pno\u015bci (AZ) lub regionami o d\u0142u\u017cszym RTT szczeg\u00f3lnie dobrze pokazuj\u0105 zalety BBR, o ile rezerwy mocy obliczeniowej procesora i kart sieciowych s\u0105 odpowiednie.<\/p>\n\n<h2>Metodologia test\u00f3w i narz\u0119dzia: wiarygodne por\u00f3wnania<\/h2>\n\n<p>Por\u00f3wnuj\u0119 BBR z CUBIC przy u\u017cyciu powtarzalnych obci\u0105\u017ce\u0144. Testy A\/B-Canaries dostarczaj\u0105 rzeczywiste czasy odpowiedzi, a testy syntetyczne wskazuj\u0105 warto\u015bci graniczne. \u201eh2load\u201c i \u201ewrk2\u201c obci\u0105\u017caj\u0105 protok\u00f3\u0142 HTTP\/2\/1.1 w spos\u00f3b deterministyczny; \u201eiperf3\u201c pokazuje surow\u0105 przepustowo\u015b\u0107 i mo\u017ce przeprowadza\u0107 pomiary dwukierunkowe. Za pomoc\u0105 \u201etc netem\u201c symuluj\u0119 dodatkowe op\u00f3\u017anienia RTT oraz losowe utraty pakiet\u00f3w, aby wcze\u015bnie wykry\u0107 zmiany w zachowaniu. Na ho\u015bcie sprawdzam za pomoc\u0105 \u201ess -ti\u201c, czy BBR jest aktywny i jak zachowuj\u0105 si\u0119 cwnd\/inflight, a za pomoc\u0105 \u201etc -s qdisc\u201c \u2013 czy \u201efq\u201c rozdziela pakiety zgodnie z oczekiwaniami. Narz\u0119dzia oparte na eBPF pokazuj\u0105 retransmisje, rozk\u0142ady RTT i szybko\u015bci regulacji przepustowo\u015bci bez du\u017cego obci\u0105\u017cenia. Kluczowe znaczenie ma <strong>Korelacja<\/strong> z metrykami sieciowymi i wska\u017anikami KPI aplikacji: op\u00f3\u017anienia p95\/p99, wska\u017aniki b\u0142\u0119d\u00f3w oraz TTFB. Tylko w ten spos\u00f3b mog\u0119 stwierdzi\u0107, czy wzrost przepustowo\u015bci faktycznie poprawia komfort u\u017cytkowania i wska\u017aniki SLO.<\/p>\n\n<h2>Lista kontrolna dotycz\u0105ca rozwi\u0105zywania problem\u00f3w i typowe trudno\u015bci<\/h2>\n\n<ul>\n  <li>Sprawd\u017a Qdisc: Czy opcja \u201enet.core.default_qdisc = fq\u201c jest aktywna i przypisana do w\u0142a\u015bciwego urz\u0105dzenia? Czy liczniki \u201etc\u201c s\u0105 zgodne z ruchem sieciowym?<\/li>\n  <li>Czy BBR naprawd\u0119 dzia\u0142a: czy \u201enet.ipv4.tcp_congestion_control\u201c wskazuje \u201ebbr\u201c, a po\u0142\u0105czenia w \u201ess -ti\u201c wykazuj\u0105 odpowiednie wzorce cwnd\/inflight?<\/li>\n  <li>Seria sygna\u0142\u00f3w steruj\u0105cych: Czy niedok\u0142adne liczniki czasu lub silne zjawisko koalescencji powoduj\u0105 jitter? Nale\u017cy to zweryfikowa\u0107, stosuj\u0105c mniejsze serie danych przesy\u0142anych do urz\u0105dzenia zewn\u0119trznego oraz w\u0119\u017csze stopnie szczeg\u00f3\u0142owo\u015bci sygna\u0142\u00f3w steruj\u0105cych.<\/li>\n  <li>Ograniczenia policer\/rate: Gdy szczytowe warto\u015bci sondowania napotykaj\u0105 ograniczone zasoby token\u00f3w, dochodzi do utraty pakiet\u00f3w i ponownych transmisji. Nale\u017cy ustawi\u0107 bardziej konserwatywne parametry \u201einflight\u201d i \u201egain\u201d.<\/li>\n  <li>Bufferbloat w sieci upstream: Gdy kolejki rozrastaj\u0105 si\u0119 poza hostem, optymalizacja hosta ma ograniczon\u0105 skuteczno\u015b\u0107. Nale\u017cy zastosowa\u0107 AQM\/ECN w miejscu w\u0105skiego gard\u0142a.<\/li>\n  <li>Priorytetyzacja HTTP\/2: Zbyt du\u017ce bufory wyj\u015bciowe zak\u0142\u00f3caj\u0105 regulacj\u0119 przepustowo\u015bci. Nale\u017cy dostosowa\u0107 parametr \u201enet.ipv4.tcp_notsent_lowat\u201c i zmniejszy\u0107 rozmiar bufor\u00f3w serwera.<\/li>\n  <li>Wersje j\u0105dra\/sterownik\u00f3w: Poszczeg\u00f3lne wydania j\u0105dra zmieniaj\u0105 szczeg\u00f3\u0142y BBR. Nale\u017cy udokumentowa\u0107 zmiany i zweryfikowa\u0107 je na podstawie wynik\u00f3w pomiar\u00f3w.<\/li>\n<\/ul>\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\/tcp-bbr-webserver-4672.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Strategia wdra\u017cania, SLO i zabezpieczenia<\/h2>\n\n<p>Okre\u015blam jasne wska\u017aniki docelowe: op\u00f3\u017anienie p95\/99, przepustowo\u015b\u0107 na rdze\u0144, wska\u017aniki b\u0142\u0119d\u00f3w oraz sprawiedliwo\u015b\u0107 w stosunku do ruchu istniej\u0105cego. Projekt pilota\u017cowy rozpoczyna si\u0119 na niewielkiej liczbie host\u00f3w z identycznymi obci\u0105\u017ceniami i czyst\u0105 grup\u0105 kontroln\u0105. Obserwuj\u0119 wska\u017aniki w r\u00f3\u017cnych scenariuszach obci\u0105\u017cenia (szczytowe, bezczynno\u015b\u0107, tworzenie kopii zapasowych) oraz w perspektywie kilku dni, aby dostrzec cykle dobowe i skrajne przypadki. Nast\u0119pnie stopniowo zwi\u0119kszam udzia\u0142, zapewniaj\u0105c mo\u017cliwo\u015b\u0107 szybkiego przywr\u00f3cenia poprzedniego stanu i blokuj\u0105c wersje j\u0105dra\/modu\u0142\u00f3w, a\u017c do momentu, gdy efekt zostanie stabilnie potwierdzony. Konfiguracje archiwizuj\u0119 z oznaczeniem wersji i regularnie je weryfikuj\u0119, aby p\u00f3\u017aniejsze aktualizacje nie <strong>jako\u015b\u0107<\/strong> nie wprowadza\u0107 zmian bez uprzedzenia. W zespo\u0142ach uzgadniam zmiany w BBR z osobami odpowiedzialnymi za aplikacje, platformy i sie\u0107, poniewa\u017c tempo, priorytetyzacja i pami\u0119ci podr\u0119czne s\u0105 ze sob\u0105 powi\u0105zane.<\/p>\n\n<h2>Kiedy BBR osi\u0105ga najlepsze wyniki \u2013 a kiedy przeprowadzam ostro\u017cne testy<\/h2>\n\n<p>W centrach danych wyposa\u017conych w najnowsze j\u0105dra, obs\u0142uguj\u0105cych globaln\u0105 baz\u0119 u\u017cytkownik\u00f3w i obs\u0142uguj\u0105cych wiele r\u00f3wnoleg\u0142ych po\u0142\u0105cze\u0144 HTTP\/2, protok\u00f3\u0142 BBR regularnie zapewnia wysok\u0105 wydajno\u015b\u0107 przy <strong>ni\u017cszy<\/strong> Op\u00f3\u017anienie. D\u0142ugie czasy RTT i ma\u0142e bufory cz\u0119sto sprawiaj\u0105 CUBICowi k\u0142opoty, podczas gdy BBR dzia\u0142a p\u0142ynniej przy umiarkowanych kolejkach. Natomiast wra\u017cliwe obci\u0105\u017cenia dzia\u0142aj\u0105ce w czasie rzeczywistym lub \u015brodowiska o silnie zr\u00f3\u017cnicowanych algorytmach sprawdzam ostro\u017cnie. W takich przypadkach osobno mierz\u0119 sprawiedliwo\u015b\u0107, op\u00f3\u017anienia ogonowe i reakcj\u0119 na utrat\u0119 pakiet\u00f3w, a nast\u0119pnie iteracyjnie dostosowuj\u0119 parametry. Dopiero gdy wska\u017aniki wydaj\u0105 si\u0119 stabilne, zwi\u0119kszam udzia\u0142 wdro\u017cenia, chroni\u0105c przy tym <strong>Zapasy<\/strong>-obci\u0105\u017cenia robocze.<\/p>\n\n<h2>Przewodnik praktyczny: wdra\u017canie pilota\u017cowe, skalowanie, zabezpieczanie<\/h2>\n\n<p>Rozpoczynam projekt pilota\u017cowy z wybranymi hostami, w\u0142\u0105czam BBR, uruchamiam \u201efq\u201c i definiuj\u0119 jasne <strong>Cele<\/strong> pod k\u0105tem przepustowo\u015bci oraz op\u00f3\u017anienia p95. Nast\u0119pnie por\u00f3wnuj\u0119 identyczne obci\u0105\u017cenia z grupami kontrolnymi przy u\u017cyciu CUBIC, aby oszacowa\u0107 rzeczywist\u0105 popraw\u0119. Wdra\u017canie przeprowadzam etapami, dokumentuj\u0105c wersje j\u0105dra, profile sysctl oraz obserwowane progi metryk. W przypadku anomalii si\u0119gam po wcze\u015bniej przetestowane zestawy parametr\u00f3w, takie jak bardziej konserwatywne wsp\u00f3\u0142czynniki wzmocnienia lub bardziej rygorystyczne warto\u015bci \u201enotsent_lowat\u201c. Po pomy\u015blnym skalowaniu wprowadzam audyty, aby aktualizacje j\u0105dra, sterownik\u00f3w i oprogramowania uk\u0142adowego <strong>jako\u015b\u0107<\/strong> nie przenosi\u0107 potajemnie.<\/p>\n\n<h2>Skr\u00f3cona wersja dla administrator\u00f3w<\/h2>\n\n<p>BBR modeluje przepustowo\u015b\u0107 i minimalny czas RTT, utrzymuje liczb\u0119 lot\u00f3w na poziomie zbli\u017conym do BDP oraz zapewnia p\u0142ynn\u0105 regulacj\u0119 tempa, co pozwala zwi\u0119kszy\u0107 przepustowo\u015b\u0107 i <strong>Op\u00f3\u017anienie<\/strong> jednocze\u015bnie czerpi\u0105 z tego korzy\u015bci. Serwery WWW obs\u0142uguj\u0105ce wiele r\u00f3wnoleg\u0142ych po\u0142\u0105cze\u0144 reaguj\u0105 szybciej, du\u017ce transfery przebiegaj\u0105 p\u0142ynniej, a strumienie HTTP\/2\/3 efektywnie dziel\u0105 przepustowo\u015b\u0107. W systemie Linux aktywuj\u0119 BBR za pomoc\u0105 kilku prze\u0142\u0105cznik\u00f3w sysctl, ustawiam \u201efq\u201c i dbam o prawid\u0142owe ustalanie priorytet\u00f3w oraz niewielkie bufory wyj\u015bciowe. Monitorowanie koncentruje si\u0119 na szybko\u015bci dostarczania, RTT p95\/p99 i sprawiedliwo\u015bci, a nie wy\u0142\u0105cznie na megabitach czy gigabitach. Kto post\u0119puje krok po kroku, mierzy, dostosowuje i konsekwentnie dokumentuje, osi\u0105gnie dzi\u0119ki BBR zauwa\u017calne <strong>Wydajno\u015b\u0107<\/strong>- Zalety bez konieczno\u015bci stosowania dodatkowego sprz\u0119tu.<\/p>","protected":false},"excerpt":{"rendered":"<p>TCP BBR to nowoczesny algorytm kontroli przeci\u0105\u017cenia, kt\u00f3ry modeluje przepustowo\u015b\u0107 i czas RTT w celu zwi\u0119kszenia wydajno\u015bci serwer\u00f3w internetowych. Dowiedz si\u0119, jak dzia\u0142a TCP BBR, jakie korzy\u015bci oferuje i jak go w\u0142\u0105czy\u0107 w systemie Linux.<\/p>","protected":false},"author":1,"featured_media":20341,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-20348","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server_vm"],"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":"67","_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":"TCP BBR","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":"20341","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20348","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=20348"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20348\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/20341"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=20348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=20348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=20348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}