{"id":20634,"date":"2026-08-14T11:50:07","date_gmt":"2026-08-14T09:50:07","guid":{"rendered":"https:\/\/webhosting.de\/numa-memory-policies-datenbankserver-optimierung-server\/"},"modified":"2026-08-14T11:50:07","modified_gmt":"2026-08-14T09:50:07","slug":"zasady-pamieci-numa-serwer-baz-danych-optymalizacja-serwer","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/numa-memory-policies-datenbankserver-optimierung-server\/","title":{"rendered":"Zasady zarz\u0105dzania pami\u0119ci\u0105 NUMA dla du\u017cych serwer\u00f3w baz danych: ukierunkowana optymalizacja wydajno\u015bci"},"content":{"rendered":"<p><strong>Pami\u0119\u0107 NUMA<\/strong> W przypadku du\u017cych serwer\u00f3w baz danych decyduje o tym, jak blisko wymaganej pami\u0119ci dzia\u0142aj\u0105 w\u0105tki oraz w jakim stopniu op\u00f3\u017anienia wp\u0142ywaj\u0105 na czasy odpowiedzi i przepustowo\u015b\u0107. Celowo dostosowuj\u0119 przydzia\u0142 procesora, rozmieszczenie pami\u0119ci i wielko\u015b\u0107 obci\u0105\u017cenia, ograniczam odleg\u0142e dost\u0119py, a tym samym osi\u0105gam niezawodn\u0105, przewidywaln\u0105 <strong>Wydajno\u015b\u0107<\/strong>.<\/p>\n\n<h2>Punkty centralne<\/h2>\n<ul>\n  <li><strong>Topologia<\/strong> Zrozumie\u0107: uwzgl\u0119dni\u0107 w spos\u00f3b ukierunkowany w\u0119z\u0142y, rdzenie, pami\u0119\u0107 RAM i po\u0142\u0105czenia mi\u0119dzysystemowe.<\/li>\n  <li><strong>Zasady<\/strong> Wybierz odpowiedni\u0105 opcj\u0119: Strict, Preferred, Interleave w zale\u017cno\u015bci od docelowego obci\u0105\u017cenia.<\/li>\n  <li><strong>Affinit\u00e4t<\/strong> Wdro\u017cenie: lokalne przypisanie w\u0105tk\u00f3w, sygna\u0142\u00f3w IRQ i pami\u0119ci.<\/li>\n  <li><strong>Maszyny wirtualne<\/strong> zgodnie z rozmiarem w\u0119z\u0142a: umie\u015bci\u0107 vCPU i pami\u0119\u0107 RAM w jednym w\u0119\u017ale NUMA.<\/li>\n  <li><strong>Monitoring<\/strong> Przeprowadzi\u0107: pomiary odczyt\u00f3w zdalnych, op\u00f3\u017anienia P99 oraz obci\u0105\u017cenia w\u0119z\u0142\u00f3w.<\/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\/datenbankserver-setup-8273.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Zrozumie\u0107 topologi\u0119 NUMA<\/h2>\n<p>Ka\u017cd\u0105 optymalizacj\u0119 rozpoczynam od <strong>Topologia<\/strong>: Ile jest w\u0119z\u0142\u00f3w NUMA, jak roz\u0142o\u017cone s\u0105 j\u0105dra, w jaki spos\u00f3b pami\u0119\u0107 RAM jest pod\u0142\u0105czona do gniazd oraz ile kosztuj\u0105 operacje dost\u0119pu do sieci po\u0142\u0105cze\u0144. Dost\u0119p do pami\u0119ci lokalnej zajmuje znacznie mniej czasu ni\u017c dost\u0119p poza granicami w\u0119z\u0142a, dlatego unikam niepotrzebnych <strong>Zdalny<\/strong>-sposoby. Du\u017ce serwery baz danych zyskuj\u0105, gdy planuj\u0119 obci\u0105\u017cenia w taki spos\u00f3b, aby w\u0105tki i dane pozostawa\u0142y na tym samym w\u0119\u017ale. Je\u015bli aktywny zestaw danych nie mie\u015bci si\u0119 w jednym w\u0119\u017ale, celowo planuj\u0119 jego rozk\u0142ad, zamiast pozostawia\u0107 to domy\u015blnemu zachowaniu. W ten spos\u00f3b utrzymuj\u0119 <strong>Op\u00f3\u017anienie<\/strong> niskie i zapewniaj\u0105 r\u00f3wnomiern\u0105 wydajno\u015b\u0107 nawet przy du\u017cym obci\u0105\u017ceniu.<\/p>\n\n<h3>Prawid\u0142owy wyb\u00f3r ustawie\u0144 BIOS-u i sprz\u0119tu<\/h3>\n<p>W BIOS-ie sprawdzam, czy <strong>Przeplatanie w\u0119z\u0142\u00f3w<\/strong> jest wy\u0142\u0105czona, aby zachowa\u0107 separacj\u0119 NUMA. Kana\u0142y pami\u0119ci przypisuj\u0119 symetrycznie do ka\u017cdego gniazda i zwracam uwag\u0119 na konfiguracj\u0119 (1DPC vs. 2DPC), aby nie dosz\u0142o do niepotrzebnego spadku cz\u0119stotliwo\u015bci taktowania i przepustowo\u015bci. Funkcje takie jak <strong>Stany C<\/strong> a w przypadku agresywnych tryb\u00f3w oszcz\u0119dzania energii ustawiam cele op\u00f3\u017anienia na bardziej konserwatywne, aby rdzenie nie musia\u0142y ci\u0105gle si\u0119 budzi\u0107. <strong>SMT\/Gwintowanie nadpr\u0105dowe<\/strong> Oceniam to w zale\u017cno\u015bci od obci\u0105\u017cenia: w przypadku obci\u0105\u017ce\u0144 OLTP silnie zale\u017cnych od pami\u0119ci ograniczam liczb\u0119 r\u00f3wnoleg\u0142ych w\u0105tk\u00f3w SMT na rdze\u0144, aby zmniejszy\u0107 obci\u0105\u017cenie pami\u0119ci podr\u0119cznej i zmienno\u015b\u0107. Sprawdzam r\u00f3wnie\u017c, czy urz\u0105dzenia PCIe (karty sieciowe, NVMe) s\u0105 pod\u0142\u0105czone lokalnie do ka\u017cdego gniazda, aby ich <strong>IRQ<\/strong> a \u015bcie\u017cki DMA nie przebiegaj\u0105 w poprzek sieci Interconnect. Kto dok\u0142adnie to zaplanuje, stworzy podstaw\u0119, na kt\u00f3rej zasady i powi\u0105zania b\u0119d\u0105 mog\u0142y w pe\u0142ni zadzia\u0142a\u0107.<\/p>\n\n<h2>W\u0142a\u015bciwy dob\u00f3r zasad zarz\u0105dzania pami\u0119ci\u0105<\/h2>\n<p>Wyb\u00f3r <strong>Polityka<\/strong> okre\u015bla, z kt\u00f3rego w\u0119z\u0142a j\u0105dro przydziela pami\u0119\u0107 oraz jak wygl\u0105daj\u0105 rozwi\u0105zania awaryjne. Opcja \u201eStrict\u201d ustanawia \u015bcis\u0142e ograniczenia i przerywa alokacj\u0119, je\u015bli w\u0119ze\u0142 docelowy nie ma wolnego miejsca; nadaje to priorytet <strong>Wydajno\u015b\u0107<\/strong> o elastyczno\u015bci. Strategia \u201ePreferred\u201d utrzymuje preferowany w\u0119ze\u0142, ale w przypadku niedoboru zasob\u00f3w przechodzi na inne w\u0119z\u0142y, oferuj\u0105c w ten spos\u00f3b kompromisowe rozwi\u0105zanie. Strategia \u201eInterleave\u201d rozdziela strony metod\u0105 \u201eround-robin\u201d mi\u0119dzy kilka w\u0119z\u0142\u00f3w, co mo\u017ce by\u0107 sensownym rozwi\u0105zaniem w przypadku bardzo du\u017cych zbior\u00f3w danych o r\u00f3wnomiernym obci\u0105\u017ceniu. W przypadku wielu baz danych lepszym rozwi\u0105zaniem jest zazwyczaj strategia lokalna oparta na metodzie \u201ePreferred\u201d lub \u201eStrict\u201d. <strong>Wyb\u00f3r<\/strong>.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Polityka<\/th>\n      <th>Prowadzenie<\/th>\n      <th>Typowe zastosowanie<\/th>\n      <th>Zalety<\/th>\n      <th>Ryzyko<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>\u015acis\u0142y<\/td>\n      <td>Pobiera dane z pami\u0119ci wy\u0142\u0105cznie z w\u0119z\u0142a docelowego, w przeciwnym razie zg\u0142asza b\u0142\u0105d<\/td>\n      <td>Krytyczne w sensie latentnym <strong>Bazy danych<\/strong> z jasnym planem w\u0119z\u0142\u00f3w<\/td>\n      <td>Maksymalnie lokalne <strong>Dost\u0119py<\/strong>, przewidywalne op\u00f3\u017anienia<\/td>\n      <td>Alokacja mo\u017ce si\u0119 nie powie\u015b\u0107, je\u015bli w\u0119ze\u0142 jest pe\u0142ny<\/td>\n    <\/tr>\n    <tr>\n      <td>Preferowane<\/td>\n      <td>W\u0119ze\u0142 preferowany, z mo\u017cliwo\u015bci\u0105 prze\u0142\u0105czenia na inny<\/td>\n      <td>Og\u00f3lne <strong>Obci\u0105\u017cenia<\/strong> przy zmiennym obci\u0105\u017ceniu<\/td>\n      <td>Dobra dost\u0119pno\u015b\u0107 przy akceptowalnej elastyczno\u015bci<\/td>\n      <td>Wi\u0119kszy udzia\u0142 pracy zdalnej w sytuacji niedoboru<\/td>\n    <\/tr>\n    <tr>\n      <td>Interleave<\/td>\n      <td>Algorytm Round-Robin obejmuj\u0105cy wiele w\u0119z\u0142\u00f3w<\/td>\n      <td>Bardzo du\u017ce, szeroko stosowane <strong>Dane<\/strong><\/td>\n      <td>Roz\u0142o\u017cone obci\u0105\u017cenie kilku w\u0119z\u0142\u00f3w<\/td>\n      <td>S\u0142absza lokalizacja, potencjalnie wi\u0119ksze op\u00f3\u017anienie<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\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\/NUMA_Optimierung_Besprechung_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>W\u0105tki, przypisanie procesora i przypisanie pami\u0119ci<\/h2>\n<p>Przypisuj\u0119 w\u0105tki do rdzeni w\u0119z\u0142a docelowego, przydzielam pami\u0119\u0107 za pomoc\u0105 numactl i dostosowuj\u0119 przerwy IRQ tak, aby <strong>Dane<\/strong> pozosta\u0107 lokalnie. To po\u0142\u0105czenie powinowactwa procesora (CPU affinity) i powi\u0105zania z pami\u0119ci\u0105 (memory binding) ogranicza kosztowne odczyty zdalne i sprawia, \u017ce rozk\u0142ad czasu wykonania jest bardziej zwarty. Aby uzyska\u0107 szczeg\u00f3\u0142ow\u0105 kontrol\u0119, stosuj\u0119 zasady na poziomie proces\u00f3w lub w\u0105tk\u00f3w i utrzymuj\u0119 pul\u0119 bufor\u00f3w jak najbli\u017cej aktywnych w\u0105tk\u00f3w roboczych. Kto chce zag\u0142\u0119bi\u0107 si\u0119 w ten temat, znajdzie praktyczne wskaz\u00f3wki dotycz\u0105ce <a href=\"https:\/\/webhosting.de\/pl\/serwer-numa-lokalnosc-cpu-powinowactwo-pamieci-optymalizacja-rdzen\/\">Przynale\u017cno\u015b\u0107 procesora<\/a>, kt\u00f3re mo\u017cna zastosowa\u0107 bezpo\u015brednio na hostach produkcyjnych. W ten spos\u00f3b zapewniam sp\u00f3jno\u015b\u0107 <strong>Op\u00f3\u017anienia<\/strong> nawet wtedy, gdy system jest mocno obci\u0105\u017cony.<\/p>\n\n<h3>Priorytet dla lokalnych zestaw\u00f3w \u201eHotsets\u201d<\/h3>\n<p>Wyr\u00f3\u017cniam zestawy \u201eHotsets\u201d z <strong>Obci\u0105\u017cenie prac\u0105<\/strong> i umieszczaj je \u015bci\u015ble lokalnie, podczas gdy dane rzadko u\u017cywane mog\u0105 by\u0107 przechowywane w spos\u00f3b bardziej elastyczny. Dzi\u0119ki takiemu ustaleniu priorytet\u00f3w \u015bcie\u017cki podstawowe pozostaj\u0105 blisko pami\u0119ci RAM w\u0119z\u0142a. Wraz ze wzrostem obci\u0105\u017cenia rozwi\u0105zanie skaluje si\u0119 p\u0142ynnie, poniewa\u017c kosztowne \u015bcie\u017cki nadal dzia\u0142aj\u0105 lokalnie. Bez tego porz\u0105dku krzywa op\u00f3\u017anie\u0144 zaczyna si\u0119 pogarsza\u0107, gdy tylko w\u0105tki coraz cz\u0119\u015bciej uzyskuj\u0105 dost\u0119p do danych w r\u00f3\u017cnych w\u0119z\u0142ach. Jasna <strong>Wi\u0105zanie<\/strong> skutecznie zapobiega w\u0142a\u015bnie takiemu zachowaniu.<\/p>\n\n<h3>Po\u0142\u0105czenie NUMA pami\u0119ci masowej i sieciowej<\/h3>\n<p>Organizuj\u0119 <strong>Karty sieciowe<\/strong> oraz <strong>NVMe<\/strong>-Urz\u0105dzenia przypisuj\u0119 celowo do gniazd i kieruj\u0119 ich sygna\u0142y IRQ do lokalnych rdzeni. Sterowanie odbiorem\/transmisj\u0105 (RSS\/RPS\/XPS) utrzymuj\u0119 sp\u00f3jnie dla ka\u017cdego w\u0119z\u0142a, tak aby pakiety by\u0142y przetwarzane tam, gdzie dzia\u0142aj\u0105 w\u0105tki bazy danych. W przypadku NVMe korzystam z kilku kolejek na rdze\u0144 i przypisuj\u0119 w\u0105tki IO lokalnie, dzi\u0119ki czemu \u015bcie\u017cki log\u00f3w i danych nie przechodz\u0105 przez interkonekt. W celu replikacji rozdzielam \u015bcie\u017cki sieciowe na poszczeg\u00f3lne w\u0119z\u0142y, tak aby przychodz\u0105ce strumienie WAL\/Redo trafia\u0142y lokalnie. W ten spos\u00f3b pozostaj\u0105 <strong>IO<\/strong>\u2013 a \u015bcie\u017cki procesora s\u0105 zgodne, a baza danych nie marnuje cykli na niepotrzebne kopie w ca\u0142ej sieci pami\u0119ci.<\/p>\n\n<h2>Planowanie maszyn wirtualnych na poziomie w\u0119z\u0142\u00f3w<\/h2>\n<p>Dopasowuj\u0119 wymiary maszyn wirtualnych tak, aby liczba procesor\u00f3w vCPU i pami\u0119\u0107 RAM mie\u015bci\u0142y si\u0119 w jednym fizycznym w\u0119\u017ale NUMA, poniewa\u017c pozwala to zmniejszy\u0107 <strong>Op\u00f3\u017anienie<\/strong> oraz ruch mi\u0119dzyw\u0119z\u0142owy. Maszyny wirtualne typu \u201ewide\u201d, kt\u00f3re s\u0105 wi\u0119ksze ni\u017c jeden w\u0119ze\u0142, nieuchronnie rozpraszaj\u0105 dost\u0119py do pami\u0119ci, trac\u0105c tym samym przewidywalno\u015b\u0107. Je\u015bli maszyna wirtualna musi by\u0107 wi\u0119ksza, planuj\u0119 vNUMA w spos\u00f3b jawny i dbam o symetryczny podzia\u0142 mi\u0119dzy w\u0119z\u0142ami. Je\u015bli chodzi o stron\u0119 hosta, unikam nadmiernego przydzia\u0142u zasob\u00f3w w przypadku obci\u0105\u017ce\u0144 wymagaj\u0105cych niskiego op\u00f3\u017anienia i rezerwuj\u0119 pami\u0119\u0107 lokaln\u0105 dla ka\u017cdej maszyny wirtualnej. Szybki przegl\u0105d fizycznej struktury w\u0119z\u0142\u00f3w zapewnia \u201e<a href=\"https:\/\/webhosting.de\/pl\/numa-nodes-hosting-serwerow-duze-systemy-serverboost\/\">Planowanie w\u0119z\u0142\u00f3w NUMA<\/a>\u201c, co u\u0142atwia podejmowanie decyzji dotycz\u0105cych rozmiaru maszyny wirtualnej oraz <strong>B\u0142\u0105d<\/strong> zapobiega przemieszczaniu si\u0119.<\/p>\n\n<h3>Nale\u017cy zwr\u00f3ci\u0107 uwag\u0119 na ustawienia hiperwizora<\/h3>\n<p>Sprawdzam, w jaki spos\u00f3b hiperwizor przedstawia vNUMA, i zachowuj\u0119 przyporz\u0105dkowanie grup vCPU do fizycznych <strong>Rdzenie<\/strong> sp\u00f3jnie. Dodatkowo dbam o to, by topologia NUMA maszyny wirtualnej odpowiada\u0142a topologii hosta, dzi\u0119ki czemu harmonogram mo\u017ce dzia\u0142a\u0107 lokalnie. Rezerwacje pami\u0119ci i regu\u0142y antyafinno\u015bci ograniczam do minimum, ale stosuj\u0119 je tak rygorystycznie, jak to konieczne. Wysok\u0105 g\u0119sto\u015b\u0107 maszyn wirtualnych na jednym gnie\u017adzie wol\u0119 zast\u0105pi\u0107 rozmieszczeniem w pobli\u017cu w\u0119z\u0142\u00f3w. W ten spos\u00f3b zapewniam <strong>Zdalny<\/strong>-Ogranicz liczb\u0119 operacji dost\u0119pu do minimum i zapewnij stabilno\u015b\u0107 \u015bcie\u017cek wej\u015bcia\/wyj\u015bcia.<\/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\/numa-memory-policies-database-8672.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h3>Kontenery i praktyka orkiestracji<\/h3>\n<p>W pojemnikach umieszczam <strong>zestaw procesor\u00f3w<\/strong>-Sp\u00f3jno\u015b\u0107 granic: procesory i powi\u0105zane maski pami\u0119ci (<em>cpuset.cpus<\/em>, <em>cpuset.mems<\/em>) s\u0105 ze sob\u0105 powi\u0105zane. Segmenty i jednostki systemd otrzymuj\u0105 sta\u0142e przypisania procesora, dzi\u0119ki czemu j\u0105dro rzeczywi\u015bcie egzekwuje preferencje pami\u0119ciowe. W warstwach orkiestracji planuj\u0119 pody\/us\u0142ugi <strong>blisko w\u0119z\u0142a<\/strong>, stosuj\u0119 oceny topologii i statyczny przydzia\u0142 procesor\u00f3w, aby obci\u0105\u017cenie nie przechodzi\u0142o mi\u0119dzy w\u0119z\u0142ami. Strony typu \u201eHuge Pages\u201d deklaruj\u0119 jawnie dla ka\u017cdego poda\/kontenera i utrzymuj\u0119 ich rozmiar oraz liczb\u0119 na sta\u0142ym poziomie dla ka\u017cdego w\u0119z\u0142a. Wa\u017cne: procesy infrastrukturalne i pomocnicze (rejestrowanie, sidecary, kopie zapasowe) przypisuj\u0119 do innych rdzeni lub nawet do drugiego w\u0119z\u0142a NUMA, aby nie zak\u0142\u00f3ca\u0107 operacji typu \u201ehotset\u201d w bazie danych.<\/p>\n\n<h2>R\u00f3wnowa\u017cenie NUMA i optymalizacja systemu operacyjnego<\/h2>\n<p>Automatyczne r\u00f3wnowa\u017cenie NUMA mo\u017ce lokalne <strong>Dost\u0119py<\/strong> poprawi\u0107, gdy obci\u0105\u017cenia si\u0119 przemieszczaj\u0105 lub fazy ulegaj\u0105 znacznym zmianom. Korzystam z tego w spos\u00f3b celowy, ale obserwuj\u0119, czy przenoszenie stron tam i z powrotem nie przynosi wi\u0119cej szkody ni\u017c po\u017cytku. Procesy o sta\u0142ej strukturze i wyra\u017anej przynale\u017cno\u015bci cz\u0119sto zyskuj\u0105 na r\u0119cznie ustawionych zasadach zamiast ci\u0105g\u0142ego przenoszenia. Parametry j\u0105dra, sterowanie IRQ oraz przezroczyste strony Huge Pages sprawdzam zawsze w kontek\u015bcie bazy danych i platformy. Jako punkt wyj\u015bcia pomaga mi to <a href=\"https:\/\/webhosting.de\/pl\/numa-rownowazenie-pamieci-serwera-optymalizacja-sprzetu-numaflux\/\">R\u00f3wnowa\u017cenie NUMA<\/a>-Przewodnik po testowaniu ustawie\u0144 krok po kroku oraz <strong>rozproszenie<\/strong> zmniejszenia op\u00f3\u017anie\u0144.<\/p>\n\n<h2>Celowe wykorzystanie stron typu \u201eHuge Pages\u201d<\/h2>\n<p>Korzystam z funkcji Huge Pages, aby ograniczy\u0107 liczb\u0119 nieudanych odwo\u0142a\u0144 do TLB oraz du\u017ce <strong>Pami\u0119\u0107<\/strong>bardziej efektywnie obs\u0142ugiwa\u0107 poszczeg\u00f3lne obszary. W przypadku serwer\u00f3w baz danych rezerwuj\u0119 strony z wyprzedzeniem, przypisuj\u0119 je do w\u0119z\u0142\u00f3w i sprawdzam, czy instancja faktycznie z nich korzysta. Cz\u0119sto wy\u0142\u0105czam Transparent Huge Pages przy okre\u015blonych celach dotycz\u0105cych op\u00f3\u017anie\u0144 i ustawiam statyczne Huge Pages, aby alokacja pozosta\u0142a deterministyczna. Decyduj\u0105ce znaczenie ma jednak blisko\u015b\u0107 w\u0119z\u0142a NUMA; Huge Pages wzmacniaj\u0105 dobr\u0105 strategi\u0119, ale jej nie zast\u0119puj\u0105. Kto to ignoruje, ten raczej nie zyska <strong>Wydajno\u015b\u0107<\/strong> i nara\u017ca si\u0119 na skutki uboczne zwi\u0105zane z paginacj\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\/numa_optimierung_7436.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wymiarowanie baz danych: pula bufor\u00f3w i obci\u0105\u017cenie robocze<\/h2>\n<p>Planuj\u0119 aktywn\u0105 obj\u0119to\u015b\u0107 pracy w taki spos\u00f3b, aby bufor puli, pami\u0119\u0107 podr\u0119czna blokad i plan\u00f3w oraz najcz\u0119\u015bciej u\u017cywane <strong>Tabele<\/strong> zmie\u015bci\u0107 si\u0119 w jednym w\u0119\u017ale. W przypadku bardzo du\u017cych instancji dziel\u0119 us\u0142ugi lub fragmenty mi\u0119dzy w\u0119z\u0142y, zamiast rozci\u0105ga\u0107 jedn\u0105 ogromn\u0105, monolityczn\u0105 instancj\u0119 na wszystkie w\u0119z\u0142y. W przypadku OLTP utrzymuj\u0119 pul\u0119 bufor\u00f3w na ka\u017cdym w\u0119\u017ale na kompaktowym poziomie i priorytetowo traktuj\u0119 lokalne wsp\u00f3\u0142czynniki trafie\u0144. W przypadku skanowania OLAP interleave mo\u017ce by\u0107 przydatne w szczeg\u00f3lnych sytuacjach, gdy ilo\u015b\u0107 danych jest ogromna i r\u00f3wnomierna. Bez tej dyscypliny ro\u015bnie <strong>Po\u0142\u0105czenie<\/strong>-ruch i zu\u017cywa rezerwy w\u0142a\u015bnie wtedy, gdy wyst\u0119puj\u0105 szczyty obci\u0105\u017cenia.<\/p>\n\n<h3>Sposoby zwi\u0105zane z bazami danych<\/h3>\n<p>Bior\u0119 pod uwag\u0119 model proces\u00f3w i w\u0105tk\u00f3w silnika: <strong>PostgreSQL<\/strong> wykorzystuje procesy, dlatego uruchamiam instancj\u0119 g\u0142\u00f3wn\u0105, Autovacuum i Checkpointer osobno dla ka\u017cdego w\u0119z\u0142a i utrzymuj\u0119 <em>shared_buffers<\/em> lokalnie dla ka\u017cdego shardu. W przypadku <strong>MySQL\/InnoDB<\/strong> tworz\u0119 folder <em>instancje puli bufor\u00f3w<\/em> na w\u0119z\u0142ach oraz dostosuj lokalnie w\u0105tki IO i modu\u0142y zapisuj\u0105ce logi. <strong>SQL Server<\/strong> korzysta z dostosowanego modelu Soft-NUMA oraz schematu przydzia\u0142u, kt\u00f3ry rozdziela harmonogramy i grupy pami\u0119ci mi\u0119dzy w\u0119z\u0142y fizyczne. <strong>Oracle<\/strong>-Instancje konfiguruj\u0119 z wykorzystaniem lokalnych stron du\u017cych (Large Pages) i dziel\u0119 serwery robocze oraz serwery wej\u015bcia\/wyj\u015bcia (IO) mi\u0119dzy w\u0119z\u0142y. Og\u00f3lnie ograniczam rywalizacj\u0119 o areny w alokatorze (np. jemalloc) poprzez areny dostosowane do architektury NUMA i dbam o to, aby <strong>Mened\u017cer blokad<\/strong> a punkty newralgiczne zwi\u0105zane z blokadami pozostaj\u0105 lokalne dzi\u0119ki zastosowaniu partycjonowania i shardingu wzd\u0142u\u017c w\u0119z\u0142\u00f3w.<\/p>\n\n<h2>Monitorowanie: wska\u017aniki, kt\u00f3re maj\u0105 znaczenie<\/h2>\n<p>Mierz\u0119 odczyty zdalne, ruch mi\u0119dzyw\u0119z\u0142owy, liczb\u0119 b\u0142\u0119d\u00f3w stron na w\u0119ze\u0142 oraz wska\u017anik P99-<strong>Op\u00f3\u017anienie<\/strong> odpowiednich zapyta\u0144. Dodatkowo monitoruj\u0119 obci\u0105\u017cenie procesora dla poszczeg\u00f3lnych w\u0119z\u0142\u00f3w, wska\u017aniki NUMA Miss oraz odsetek lokalnych dost\u0119p\u00f3w do pami\u0119ci. Ten widok pokazuje, czy polityka dzia\u0142a, czy te\u017c w\u0105tki w spos\u00f3b niekontrolowany uzyskuj\u0105 dost\u0119p do odleg\u0142ych stron. Koreluj\u0119 szczyty obci\u0105\u017cenia z decyzjami harmonogramu, zdarzeniami migracji oraz b\u0142\u0119dami alokacji. Dopiero te wska\u017aniki potwierdzaj\u0105, \u017ce <strong>Polityka<\/strong> nie tylko w laboratorium, ale na sta\u0142e w systemie produkcyjnym.<\/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\/numa_memory_optimierung_3481.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Strategia testowa i wdro\u017cenie<\/h2>\n<p>Przeprowadzam testy etapami: najpierw mikrotesty wydajno\u015bci dotycz\u0105ce <strong>Szeroko\u015b\u0107 pasma<\/strong> oraz op\u00f3\u017anienie na w\u0119ze\u0142, a nast\u0119pnie realistyczne obci\u0105\u017cenia z \u201ezimnymi\u201d i \u201eciep\u0142ymi\u201d pami\u0119ciami podr\u0119cznymi. Obci\u0105\u017cenie zwi\u0119kszam stopniowo, mierz\u0119 warto\u015bci P95\/P99\/P99,9 i obserwuj\u0119 rozk\u0142ad wynik\u00f3w, a nie tylko \u015brednie. Dokumentuj\u0119 ka\u017cd\u0105 zmian\u0119 (polityk\u0119, powinowactwa, strony typu Huge Pages, przekierowanie IRQ) i por\u00f3wnuj\u0119 wyniki test\u00f3w A\/B w identycznych warunkach ramowych. Przed wdro\u017ceniem definiuj\u0119 <strong>Kryteria anulowania<\/strong> oraz plan awaryjny, dzi\u0119ki kt\u00f3remu w razie regresji b\u0119d\u0119 m\u00f3g\u0142 szybko przywr\u00f3ci\u0107 poprzedni\u0105 konfiguracj\u0119. Kr\u00f3tki test wytrzyma\u0142o\u015bciowy pod sta\u0142ym obci\u0105\u017ceniem pozwala sprawdzi\u0107 <strong>Drift<\/strong> oraz migracje, kt\u00f3re w kr\u00f3tkich okresach pozostaj\u0105 niewidoczne.<\/p>\n\n<h2>Procedura krok po kroku<\/h2>\n<p>Najpierw wprowadzam <strong>Topologia<\/strong>: Liczba w\u0119z\u0142\u00f3w, przypisanie rdzeni, kana\u0142y pami\u0119ci i interkonekt. Nast\u0119pnie okre\u015blam docelowe obci\u0105\u017cenie dla ka\u017cdego w\u0119z\u0142a i sprawdzam, czy zmieszcz\u0105 si\u0119 w nim zestawy \u201ehotsets\u201d. W kolejnym kroku ustawiam powinowactwo procesora, kierowanie IRQ oraz wi\u0105zanie pami\u0119ci na poziomie procesu lub w\u0105tku. Nast\u0119pnie w\u0142\u0105czam lub wy\u0142\u0105czam r\u00f3wnowa\u017cenie NUMA w zale\u017cno\u015bci od dynamiki obci\u0105\u017cenia i w razie potrzeby rezerwuj\u0119 ogromne strony pami\u0119ci na ka\u017cdy w\u0119ze\u0142. Na koniec weryfikuj\u0119 wynik za pomoc\u0105 powtarzalnych test\u00f3w obci\u0105\u017ceniowych i monitoruj\u0119 <strong>Kluczowe dane<\/strong> w trybie ci\u0105g\u0142ym.<\/p>\n\n<h2>Przyk\u0142ady z praktyki i przeszkody<\/h2>\n<p>Instancja OLTP z wieloma kr\u00f3tkimi transakcjami odnotowuje wymiern\u0105 popraw\u0119 wydajno\u015bci, gdy ustawi\u0119 liczb\u0119 w\u0105tk\u00f3w roboczych i pul\u0119 bufor\u00f3w na <strong>W\u0119ze\u0142<\/strong> i ustawi\u0107 opcj\u0119 \u201eStrict\u201c lub \u201ePreferred\u201d. Magazyn danych z szerokimi skanami mo\u017ce odnie\u015b\u0107 korzy\u015bci z interleave, je\u015bli dane s\u0105 wykorzystywane bardzo r\u00f3wnomiernie, a w\u0119z\u0142y s\u0105 dobrze obci\u0105\u017cone. Maszyny wirtualne staj\u0105 si\u0119 znacznie trudniejsze do planowania, gdy tylko wykraczaj\u0105 poza granice w\u0119z\u0142\u00f3w, a hiperwizor przydziela pami\u0119\u0107 w spos\u00f3b rozproszony. Cz\u0119sto obserwuj\u0119, \u017ce pojedyncza \u201erozleg\u0142a\u201d maszyna wirtualna przeci\u0105\u017ca interkonekt, spowalniaj\u0105c tym samym s\u0105siednie maszyny wirtualne. Efekty te zanikaj\u0105, gdy tylko przejd\u0119 na lokaln\u0105 <strong>Przydzia\u0142<\/strong> i powr\u00f3c\u0119 do poprawnej konfiguracji vNUMA.<\/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\/serverraum-numa-9023.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Scenariusze b\u0142\u0119d\u00f3w i antywzorce<\/h2>\n<p>Z <strong>\u015acis\u0142y<\/strong> zwi\u0119kszam ryzyko niepowodzenia alokacji i uruchomienia mechanizmu OOM-Killer. Dlatego zapewniam wolne zasoby rezerwowe na w\u0119\u017ale docelowym, monitoruj\u0119 nieudane pr\u00f3by i definiuj\u0119 rozwi\u0105zania awaryjne (np. ukierunkowan\u0105 zmian\u0119 rozmiaru poza godzinami szczytu). Transparent Huge Pages w <em>zawsze<\/em>-tryb powoduje w \u015bcie\u017ckach op\u00f3\u017anienia <strong>Defragmentacja<\/strong> i stajni \u2013 korzystam z rezerwacji statycznych lub w\u0142\u0105czam THP <em>madvise<\/em>. Automatyczne r\u00f3wnowa\u017cenie NUMA mo\u017ce przenosi\u0107 strony tam i z powrotem przy zmiennym obci\u0105\u017ceniu; je\u015bli zauwa\u017c\u0119 wzorce \u201epage bounce\u201d, ponownie r\u0119cznie ustalam zasady. W maszynach wirtualnych <strong>Baloniarstwo<\/strong> a kompresja pami\u0119ci to zmora przewidywalno\u015bci; w przypadku krytycznych baz danych wy\u0142\u0105czam te funkcje. Migracje na \u017cywo mi\u0119dzy w\u0119z\u0142ami planuj\u0119 wy\u0142\u0105cznie w ramach okien przestoju lub najpierw przenosz\u0119 dane po stronie bazy danych, aby interkonekt nie uleg\u0142 wt\u00f3rnemu przeci\u0105\u017ceniu.<\/p>\n\n<h2>Planowanie zdolno\u015bci produkcyjnych i rozw\u00f3j<\/h2>\n<p>Planuj\u0119 na ka\u017cdy w\u0119ze\u0142 po <strong>Rezerwa<\/strong> Ustawiam 10\u201320 % na okresy szczytowego obci\u0105\u017cenia, operacje Autovacuum\/Compaction oraz okresowe zadania konserwacyjne. Gdy ilo\u015b\u0107 danych ro\u015bnie, najpierw skaluj\u0119 system wzd\u0142u\u017c w\u0119z\u0142\u00f3w (shard\u00f3w\/us\u0142ug), zamiast \u015blepo powi\u0119ksza\u0107 ca\u0142\u0105 pul\u0119 bufor\u00f3w. Zapobiegam cichemu \u201estopniowemu wzrostowi\u201c poprzez ustalenie sztywnych limit\u00f3w dla poszczeg\u00f3lnych w\u0119z\u0142\u00f3w oraz alert\u00f3w uruchamianych, gdy tylko spadaj\u0105 lokalne wska\u017aniki trafie\u0144 lub wzrasta udzia\u0142 danych zdalnych. Przy prognozowaniu na kolejne kwarta\u0142y bior\u0119 pod uwag\u0119 nie tylko obj\u0119to\u015b\u0107 danych, ale tak\u017ce <strong>Wska\u017aniki transakcji<\/strong> oraz zmiany w rozk\u0142adzie dost\u0119pu, poniewa\u017c cz\u0119sto powoduj\u0105 one przesuni\u0119cie zestaw\u00f3w najcz\u0119\u015bciej u\u017cywanych (hotset\u00f3w) szybciej ni\u017c wynika\u0142oby to wy\u0142\u0105cznie z zapotrzebowania na pami\u0119\u0107. Dzi\u0119ki temu platforma pozostaje stabilna, a rozbudowa odbywa si\u0119 w spos\u00f3b kontrolowany, bez po\u015bwi\u0119cania lokalno\u015bci NUMA.<\/p>\n\n<h2>Kr\u00f3tki bilans<\/h2>\n<p>Optymalizuj\u0119 du\u017ce serwery baz danych poprzez <strong>NUMA<\/strong>-Sp\u00f3jnie \u0142\u0105cz\u0119 topologi\u0119, zasady i wielko\u015b\u0107 obci\u0105\u017cenia. Lokalne przypisanie pami\u0119ci zapewnia kluczowe milisekundy, podczas gdy nieplanowane dost\u0119py zdalne powoduj\u0105 wzrost op\u00f3\u017anienia P99. W przysz\u0142o\u015bci planuj\u0119 maszyny wirtualne tak, aby mie\u015bci\u0142y si\u0119 w w\u0119z\u0142ach lub wyra\u017anie wykorzystywa\u0142y vNUMA. Ustawienia systemu operacyjnego, powinowactwa i strony typu Huge Pages stosuj\u0119 w spos\u00f3b celowy, sprawdzam ich wp\u0142yw i wdra\u017cam zmiany wy\u0142\u0105cznie w oparciu o pomiary. Kto zastosuje si\u0119 do tych wskaz\u00f3wek, osi\u0105gnie oczekiwane <strong>Wydajno\u015b\u0107<\/strong> sk\u0142ada si\u0119 z nowoczesnego sprz\u0119tu i zapewnia niezawodn\u0105 szybko\u015b\u0107 dzia\u0142ania platform nawet przy du\u017cym obci\u0105\u017ceniu.<\/p>","protected":false},"excerpt":{"rendered":"<p>Zasady pami\u0119ci NUMA poprawiaj\u0105 wydajno\u015b\u0107 du\u017cych serwer\u00f3w baz danych dzi\u0119ki lokalnemu przydzielaniu pami\u0119ci, powi\u0105zaniu z procesorem oraz odpowiedniemu sprz\u0119towi serwerowemu.<\/p>","protected":false},"author":1,"featured_media":20627,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-20634","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":"113","_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":"NUMA Memory","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":"20627","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20634","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=20634"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20634\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/20627"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=20634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=20634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=20634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}