{"id":20866,"date":"2026-08-21T15:06:21","date_gmt":"2026-08-21T13:06:21","guid":{"rendered":"https:\/\/webhosting.de\/vm-swappiness-optimieren-linux-hosting-server-tuning-swap\/"},"modified":"2026-08-21T15:06:21","modified_gmt":"2026-08-21T13:06:21","slug":"optymalizacja-wm-swappiness-hosting-na-linuksie-dostrajanie-serwera-swap","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/vm-swappiness-optimieren-linux-hosting-server-tuning-swap\/","title":{"rendered":"Prawid\u0142owe ustawienie parametru vm.swappiness w celu uzyskania optymalnej wydajno\u015bci serwera"},"content":{"rendered":"<p>Poka\u017c\u0119, jak ustawi\u0107 parametr vm.swappiness tak, aby us\u0142ugi internetowe i bazodanowe na serwerach hostingowych reagowa\u0142y szybciej i generowa\u0142y mniej operacji wej\u015bcia\/wyj\u015bcia. Dzi\u0119ki jasnym instrukcjom, sensownym warto\u015bciom pocz\u0105tkowym i monitorowaniu wykorzystasz w pe\u0142ni dost\u0119pn\u0105 pami\u0119\u0107 RAM oraz zmniejszysz <strong>Op\u00f3\u017anienia<\/strong> i zapobiegasz niepotrzebnemu swappowaniu.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<p>Poni\u017csze punkty pozwol\u0105 ci szybko zapozna\u0107 si\u0119 z ustawieniami, kt\u00f3re mo\u017cna zastosowa\u0107 od razu.<\/p>\n<ul>\n  <li><strong>Zachowanie w grze Swappiness<\/strong>: Okre\u015bla, jak wcze\u015bnie j\u0105dro przenosi pami\u0119\u0107 RAM do obszaru swap.<\/li>\n  <li><strong>Odniesienie do obci\u0105\u017cenia prac\u0105<\/strong>: Dostosuj warto\u015bci do typu aplikacji, np. bazy danych lub strony internetowej.<\/li>\n  <li><strong>Przeprowad\u017a test tymczasowy<\/strong>: Najpierw sprawd\u017a na \u017cywo, a dopiero potem ustal na sta\u0142e.<\/li>\n  <li><strong>Uk\u0142ad swap\u00f3w<\/strong>: Nale\u017cy uwzgl\u0119dni\u0107 wielko\u015b\u0107, \u015brodki i priorytety.<\/li>\n  <li><strong>Monitoring<\/strong>: Monitorowanie i regulacja operacji wej\u015bcia\/wyj\u015bcia, pami\u0119ci RAM oraz czas\u00f3w odpowiedzi.<\/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\/optimale-servereinstellung-5932.png\" alt=\"Serwer z optymalnymi ustawieniami zapewniaj\u0105cy wyj\u0105tkow\u0105 wydajno\u015b\u0107\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Czym jest vm.swappiness i jak dzia\u0142a<\/h2>\n\n<p>Parametr j\u0105dra <strong>vm.swappiness<\/strong> okre\u015bla, jak intensywnie system Linux przenosi strony pami\u0119ci z pami\u0119ci RAM do obszaru wymiany. Aktualn\u0105 warto\u015b\u0107 znajdziesz w pseudoplikowym systemie plik\u00f3w pod \u015bcie\u017ck\u0105 \/proc\/sys\/vm\/swappiness i mo\u017cesz j\u0105 zmieni\u0107 w trakcie dzia\u0142ania systemu lub na sta\u0142e. Wysoka warto\u015b\u0107 powoduje wcze\u015bniejsze przenoszenie danych do partycji swap, natomiast niska warto\u015b\u0107 sprawia, \u017ce zawarto\u015b\u0107 d\u0142u\u017cej pozostaje w pami\u0119ci RAM. Celem jest osi\u0105gni\u0119cie dobrej r\u00f3wnowagi mi\u0119dzy wykorzystaniem pami\u0119ci RAM, pami\u0119ci\u0105 podr\u0119czn\u0105 stron oraz kontrolowanym zachowaniem partycji swap. Pami\u0119tam, \u017ce pami\u0119\u0107 RAM jest znacznie szybsza ni\u017c jakikolwiek dysk SSD, dlatego preferuj\u0119 <strong>Pami\u0119\u0107 robocza<\/strong> zdecydowanie przed swapem.<\/p>\n\n<h2>Dlaczego Swappiness ma znaczenie na serwerach hostingowych<\/h2>\n\n<p>Na serwerach internetowych i aplikacyjnych decyduj\u0105ce znaczenie ma ustawienie <strong>Swappiness<\/strong> o czasie reakcji i przepustowo\u015bci. Agresywne prze\u0142\u0105czanie pami\u0119ci powoduje dodatkowe obci\u0105\u017cenie operacji wej\u015bcia\/wyj\u015bcia i spowalnia zapytania, zw\u0142aszcza w przypadku obci\u0105\u017ce\u0144 opartych na bazach danych. Z kolei zbyt niskie warto\u015bci nios\u0105 ze sob\u0105 ryzyko p\u00f3\u017aniejszych zdarze\u0144 OOM, kt\u00f3re powoduj\u0105 nag\u0142e zako\u0144czenie proces\u00f3w. Dlatego opr\u00f3cz pami\u0119ci RAM i obszaru wymiany oceniam r\u00f3wnie\u017c typowe szczyty obci\u0105\u017cenia, pami\u0119ci podr\u0119czne i wzorce zapyta\u0144. Zmniejszenie op\u00f3\u017anie\u0144 pozwala unikn\u0105\u0107 zaci\u0119\u0107 i zapewnia zauwa\u017caln\u0105 p\u0142ynno\u015b\u0107 transakcji <strong>p\u0142yn<\/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\/servermeeting_swappiness_3847.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Zalecenia w zale\u017cno\u015bci od obci\u0105\u017cenia prac\u0105<\/h2>\n\n<p>Jedna warto\u015b\u0107 rzadko pasuje do wszystkich scenariuszy, dlatego zaczynam od sprawdzonych w praktyce przedzia\u0142\u00f3w, a nast\u0119pnie dostosowuj\u0119 je na podstawie danych pomiarowych. Bazy danych korzystaj\u0105 z bardzo niskich ustawie\u0144, podczas gdy serwery czysto internetowe cz\u0119sto toleruj\u0105 nieco wy\u017csze warto\u015bci. Systemy testowe lub deweloperskie mog\u0105 dzia\u0142a\u0107 bli\u017cej standardu, poniewa\u017c wygoda odgrywa tu wi\u0119ksz\u0105 rol\u0119. Poni\u017cszy schemat wykorzystuj\u0119 jako pragmatyczny punkt wyj\u015bcia do <strong>Hosting<\/strong>-Obci\u0105\u017cenia. Nast\u0119pnie monitoruj\u0119 operacje wej\u015bcia\/wyj\u015bcia, wykorzystanie pami\u0119ci wymiany oraz czasy odpowiedzi i dostosowuj\u0119 ustawienia w zale\u017cno\u015bci od potrzeb.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Obci\u0105\u017cenie prac\u0105<\/th>\n      <th>Zalecany poziom swappiness<\/th>\n      <th>Cel<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>Bazy danych<\/strong> (MySQL, PostgreSQL)<\/td>\n      <td>0\u201310<\/td>\n      <td>Utrzymywanie bufora w pami\u0119ci RAM, ograniczanie op\u00f3\u017anie\u0144<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>W czasie rzeczywistym\/o niskim op\u00f3\u017anieniu<\/strong><\/td>\n      <td>0\u201310<\/td>\n      <td>Unikanie szczyt\u00f3w obci\u0105\u017cenia wej\u015bcia\/wyj\u015bcia poprzez wykorzystanie pami\u0119ci wymiany<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Serwer sieciowy<\/strong> z skrzynkami<\/td>\n      <td>10\u201320 (czasami 10\u201330)<\/td>\n      <td>Przenoszenie nieaktywnych stron, aktywne \u017c\u0105dania w pami\u0119ci RAM<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Rozw\u00f3j\/Testy<\/strong><\/td>\n      <td>30\u201360<\/td>\n      <td>Komfort i stabilno\u015b\u0107 przed op\u00f3\u017anieniem<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Sprawd\u017a aktualn\u0105 warto\u015b\u0107<\/h2>\n\n<p>Zanim zmieni\u0119 warto\u015bci, odczytuj\u0119 stan i dokumentuj\u0119 <strong>Linia bazowa<\/strong>. W tym celu u\u017cywam polecenia `cat \/proc\/sys\/vm\/swappiness` lub `sysctl vm.swappiness` \u2013 oba sposoby zwracaj\u0105 warto\u015b\u0107 liczbow\u0105, np. 60. R\u00f3wnolegle sprawdzam zaj\u0119to\u015b\u0107 pami\u0119ci RAM i partycji swap za pomoc\u0105 polecenia `free -h`. Za pomoc\u0105 polecenia `swapon \u2013show` sprawdzam rozmiar, priorytet i no\u015bnik aktywnych urz\u0105dze\u0144 swapowych. Te dane wyj\u015bciowe pomagaj\u0105 mi p\u00f3\u017aniej oceni\u0107 skutki <strong>przydziela\u0107<\/strong> by\u0107 w stanie.<\/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\/server-optimierung-swappiness-4287.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Najpierw przetestowa\u0107 tymczasowo, zamiast od razu wprowadza\u0107 sta\u0142e zmiany<\/h2>\n\n<p>Najpierw zainstaluj\u0119 Swappiness na pr\u00f3b\u0119, aby sprawdzi\u0107 reakcje w rzeczywistych <strong>Obci\u0105\u017cenie<\/strong> wida\u0107. Polecenie `sysctl vm.swappiness=10` dzia\u0142a natychmiast, ale jego efekt utrzymuje si\u0119 tylko do momentu ponownego uruchomienia systemu. Podczas test\u00f3w obserwuj\u0119 `top` lub `htop`, sprawdzam `vmstat` i `iostat` oraz mierz\u0119 czasy odpowiedzi us\u0142ug. Je\u015bli wska\u017anik swapowania zmniejsza si\u0119, a op\u00f3\u017anienia pozostaj\u0105 stabilne, przechodz\u0119 do kolejnych krok\u00f3w. Dopiero gdy wska\u017aniki s\u0105 przekonuj\u0105ce, zapisuj\u0119 warto\u015b\u0107 <strong>sta\u0142y<\/strong> sta\u0142y.<\/p>\n\n<h2>Skonfiguruj na sta\u0142e<\/h2>\n\n<p>Je\u015bli warto\u015b\u0107 testowa jest prawid\u0142owa, wpisuj\u0119 j\u0105 do pliku konfiguracyjnego sysctl i ponownie \u0142aduj\u0119 ustawienia. W pliku \/etc\/sysctl.conf dodaj\u0119 wiersz vm.swappiness=10 i aktywuj\u0119 go poleceniem sysctl -p. Uwa\u017cam jednak za bardziej przejrzyste utworzenie osobnego pliku w katalogu \/etc\/sysctl.d\/, na przyk\u0142ad 99-swappiness.conf, i za\u0142adowanie go za pomoc\u0105 polecenia sysctl \u2013system. Takie rozwi\u0105zanie pozwala na \u0142atwe zarz\u0105dzanie wersjami i w\u0142\u0105czenie go do proces\u00f3w automatyzacji. Bardziej szczeg\u00f3\u0142owy przegl\u0105d powi\u0105zanych parametr\u00f3w zawiera ten artyku\u0142 na stronie <a href=\"https:\/\/webhosting.de\/pl\/optymalizacja-wydajnosci-serwera-hostingowego-za-pomoca-sysctl\/\">sysctl tuning<\/a>, kt\u00f3ry pomaga mi w uporz\u0105dkowaniu zmian oraz <strong>Przejrzysto\u015b\u0107<\/strong> przynosi.<\/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\/serverperformance_8432.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Rozmiar partycji swap, uk\u0142ad pami\u0119ci i no\u015bniki danych<\/h2>\n\n<p>Swappiness nigdy nie dzia\u0142a w oderwaniu od innych czynnik\u00f3w, dlatego oceniam wielko\u015b\u0107 i po\u0142o\u017cenie <strong>Zamiana<\/strong> zawsze. Zbyt ma\u0142a przestrze\u0144 wymiany szybko si\u0119 zape\u0142nia, a zbyt du\u017ca wyd\u0142u\u017ca fazy wej\u015bcia\/wyj\u015bcia w sytuacjach obci\u0105\u017cenia. Na dyskach SSD lub NVMe przestrze\u0144 wymiany dzia\u0142a szybciej ni\u017c na dyskach HDD, jednak pami\u0119\u0107 RAM pozostaje o kilka rz\u0119d\u00f3w wielko\u015bci przed nimi. Kilka urz\u0105dze\u0144 wymiany z priorytetami pomaga w pierwszym rz\u0119dzie wykorzysta\u0107 najszybszy no\u015bnik. Kto chce zg\u0142\u0119bi\u0107 zalety i wady, znajdzie w tym przegl\u0105dzie informacje na temat <a href=\"https:\/\/webhosting.de\/pl\/czy-swap-w-hostingu-ma-sens-czy-tez-obniza-wydajnosc-ramboost\/\">Swap w hostingu<\/a> przydatne wskaz\u00f3wki do przemy\u015blenia dla <strong>Praktyka<\/strong>.<\/p>\n\n<h2>Przebieg pracy w praktyce: krok po kroku<\/h2>\n\n<p>Zaczn\u0119 od oceny aktualnego stanu: zanotuj\u0119 aktualn\u0105 warto\u015b\u0107 Swappiness, wykorzystanie pami\u0119ci RAM i partycji swap, obci\u0105\u017cenie procesora oraz operacje wej\u015bcia\/wyj\u015bcia i zapisz\u0119 to jako <strong>Odniesienie<\/strong> zapisuj\u0119. Nast\u0119pnie klasyfikuj\u0119 obci\u0105\u017cenie: g\u0142\u00f3wnie bazy danych, serwisy internetowe z pami\u0119ci\u0105 podr\u0119czn\u0105, obci\u0105\u017cenia mieszane lub kontenerowe. Potem ustalam docelow\u0105 warto\u015b\u0107: dla baz danych 0\u201310, dla serwis\u00f3w internetowych zazwyczaj 10\u201320, a w przypadku obci\u0105\u017ce\u0144 mieszanych ostro\u017cnie testuj\u0119. Ustawiam warto\u015b\u0107 tymczasowo, obserwuj\u0119 kilka faz obci\u0105\u017cenia i por\u00f3wnuj\u0119 wska\u017aniki. Je\u015bli obraz si\u0119 powtarza, ustalam warto\u015b\u0107 na sta\u0142e, dokumentuj\u0119 zmian\u0119 i sprawdzam j\u0105 po aktualizacji j\u0105dra, sprz\u0119tu lub <strong>Zwolnienie<\/strong>-Zmiana ponownie.<\/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\/serverperformance_vm_4512.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Specjalne scenariusze: kontenery, maszyny wirtualne i chmura<\/h2>\n\n<p>W kontenerach i maszynach wirtualnych zwi\u0119kszam warto\u015b\u0107 parametru \u201eswappiness\u201d zar\u00f3wno na poziomie hosta, jak i go\u015bcia <strong>wsp\u00f3lnie<\/strong> . Systemy orkiestracji, takie jak Kubernetes, zazwyczaj korzystaj\u0105 z bardzo niskich ustawie\u0144 na w\u0119z\u0142ach roboczych, aby ograniczy\u0107 op\u00f3\u017anienia w podach. W maszynach wirtualnych ustalam wewn\u0119trznie odpowiednie warto\u015bci, zwracaj\u0105c jednak uwag\u0119, aby hiperwizor nie dzia\u0142a\u0142 w spos\u00f3b sprzeczny. W elastycznych konfiguracjach chmurowych konserwatywne warto\u015bci pomagaj\u0105 wyr\u00f3wna\u0107 szczyty obci\u0105\u017cenia, dop\u00f3ki skalowanie nie zacznie dzia\u0142a\u0107. Staram si\u0119 unika\u0107 sytuacji, w kt\u00f3rej pojedynczy kontener, poprzez intensywne korzystanie z pami\u0119ci wymiany, obci\u0105\u017ca ca\u0142\u0105 <strong>Platforma<\/strong> hamuje.<\/p>\n\n<h2>Monitorowanie i rozwi\u0105zywanie problem\u00f3w<\/h2>\n\n<p>Typowe sygna\u0142y ostrzegawcze wskazuj\u0105ce na nieodpowiedni\u0105 warto\u015b\u0107 swappiness to dla mnie wysokie obci\u0105\u017cenie wej\u015bcia\/wyj\u015bcia przy wci\u0105\u017c wolnej pami\u0119ci RAM, wahaj\u0105ce si\u0119 czasy odpowiedzi oraz powolne zapytania do bazy danych. Takie wzorce sprawdzam za pomoc\u0105 narz\u0119dzi vmstat, iostat, sar oraz metryk z mojego stosu obserwowalno\u015bci. Je\u015bli system wykazuje intensywne wykorzystanie pami\u0119ci wymiany pomimo wolnej pami\u0119ci RAM, zazwyczaj obni\u017cam warto\u015b\u0107 swappiness. Je\u015bli zauwa\u017c\u0119 logi OOM lub przerwania dzia\u0142ania przy ograniczonej ilo\u015bci pami\u0119ci RAM, umiarkowanie podnosz\u0119 warto\u015b\u0107 swappiness lub dostosowuj\u0119 konfiguracj\u0119 pami\u0119ci wymiany. Poni\u017csza tabela przedstawia symptomy wskazuj\u0105ce na prawdopodobn\u0105 <strong>Przyczyna<\/strong> i wyznacza wst\u0119pny kierunek.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Objaw<\/th>\n      <th>Prawdopodobna przyczyna<\/th>\n      <th>Nast\u0119pny krok<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>Wysoka przepustowo\u015b\u0107 wej\u015bcia\/wyj\u015bcia<\/strong> przy wolnej pami\u0119ci RAM<\/td>\n      <td>Zbyt wysoki poziom swappinessu<\/td>\n      <td>Obni\u017cy\u0107 warto\u015b\u0107, zmierzy\u0107 efekt<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Zdarzenia OOM<\/strong> pod obci\u0105\u017ceniem<\/td>\n      <td>Zbyt niski wska\u017anik swappiness lub zbyt ma\u0142a ilo\u015b\u0107 pami\u0119ci swap<\/td>\n      <td>Zwi\u0119kszy\u0107 warto\u015b\u0107, sprawdzi\u0107 rozmiar swapu<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Zapytania o niskiej wydajno\u015bci<\/strong> pomimo rezerwy mocy procesora<\/td>\n      <td>Bufor bazy danych zosta\u0142 przeniesiony do pami\u0119ci zewn\u0119trznej<\/td>\n      <td>Warto\u015b\u0107 w zakresie 0\u201310, analiza bufora DB<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Szczyty obci\u0105\u017cenia<\/strong> bez w\u0105skiego gard\u0142a procesora<\/td>\n      <td>Szczyty obci\u0105\u017cenia we\/wy spowodowane operacjami swapowania<\/td>\n      <td>Zmniejszy\u0107 warto\u015b\u0107 Swappiness, sprawdzi\u0107 trafienia w pami\u0119ci podr\u0119cznej<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Zrozumienie wska\u017anik\u00f3w o wysokim stopniu szczeg\u00f3\u0142owo\u015bci<\/h2>\n\n<p>Aby obiektywnie oceni\u0107 wsp\u00f3\u0142czynnik swappiness, przygl\u0105dam si\u0119 dok\u0142adniej licznikom j\u0105dra. W pliku \/proc\/vmstat warto\u015bci pswpin i pswpout wskazuj\u0105 liczb\u0119 stron wczytanych i wyrzuconych z pami\u0119ci. pgscan_kswapd_* i pgsteal_* pokazuj\u0105, jak agresywnie dzia\u0142a modu\u0142 odzyskiwania pami\u0119ci. Je\u015bli pojawia si\u0119 du\u017co wpisu pgmajfault (Major Page Faults), oznacza to, \u017ce dochodzi do ponownego \u0142adowania danych, kt\u00f3re obci\u0105\u017ca operacje wej\u015bcia\/wyj\u015bcia. Sprawdzam te warto\u015bci wielokrotnie lub za pomoc\u0105 polece\u0144 `sar -B` i `sar -W`, \u017ceby zobaczy\u0107 \u015brednie warto\u015bci, a nie tylko chwilowe odczyty. Za pomoc\u0105 polecenia vmstat 1 rozpoznaj\u0119 si\/so (Swap in\/out) i mog\u0119 przypisa\u0107 skoki do rzeczywistych zdarze\u0144. Dodatkowo katalog \/proc\/pressure\/memory dostarcza oceny, w jakim stopniu zadania s\u0105 ograniczane z powodu presji pami\u0119ciowej <strong>blok<\/strong> (PSI). Je\u015bli warto\u015bci te wzrosn\u0105 cz\u0119\u015bciowo lub ca\u0142kowicie, mam wyra\u017an\u0105 wskaz\u00f3wk\u0119, \u017ce proces odzyskiwania jest zbyt agresywny lub \u017ce wsp\u00f3\u0142czynnik swappiness jest nieodpowiedni.<\/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\/serverperformance-8734.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Swappiness 0 vs. 1: co tak naprawd\u0119 robi j\u0105dro<\/h2>\n\n<p>Cz\u0119sto uwa\u017ca si\u0119, \u017ce warto\u015b\u0107 Swappiness=0 ca\u0142kowicie wy\u0142\u0105cza swapowanie. Nie jest to do ko\u0144ca prawd\u0105. Warto\u015b\u0107 0 sygnalizuje j\u0105dru, aby w miar\u0119 mo\u017cliwo\u015bci unika\u0142o swapowania i korzysta\u0142o z niego tylko w przypadku rzeczywistego niedoboru pami\u0119ci. W praktyce warto\u015b\u0107 z przedzia\u0142u 1\u201310 wystarcza, aby uzyska\u0107 bardzo pow\u015bci\u0105gliwe zachowanie, podczas gdy warto\u015b\u0107 0 w niekt\u00f3rych wersjach j\u0105dra mo\u017ce sporadycznie prowadzi\u0107 do op\u00f3\u017anionych, ale za to intensywnych faz odzyskiwania pami\u0119ci. W przypadku us\u0142ug, dla kt\u00f3rych op\u00f3\u017anienia maj\u0105 kluczowe znaczenie, zazwyczaj ustawiam warto\u015b\u0107 1\u20135 i obserwuj\u0119, czy warto\u015bci pswpout\/pswpin pozostaj\u0105 praktycznie na poziomie zerowym. Je\u015bli przy warto\u015bci 0 podczas okres\u00f3w wzmo\u017conego obci\u0105\u017cenia wyst\u0119puj\u0105 zdarzenia OOM, nieznacznie zwi\u0119kszam t\u0119 warto\u015b\u0107, aby j\u0105dro wcze\u015bniej \u0142agodnie zmniejsza\u0142o obci\u0105\u017cenie, zamiast reagowa\u0107 gwa\u0142townie. <strong>w\u0142ama\u0107 si\u0119<\/strong>.<\/p>\n\n<h2>Jak efektywnie korzysta\u0107 z Zswap i ZRAM<\/h2>\n\n<p>Opr\u00f3cz klasycznego swapowania na dysku, w zale\u017cno\u015bci od profilu korzystam z Zswap lub ZRAM. Zswap kompresuje strony wyrzucone do pami\u0119ci swapowej i pocz\u0105tkowo przechowuje je w pami\u0119ci RAM, a dopiero w razie potrzeby przenosi je na no\u015bnik danych. Zmniejsza to liczb\u0119 operacji wej\u015bcia\/wyj\u015bcia i wyr\u00f3wnuje op\u00f3\u017anienia, ale obci\u0105\u017ca procesor. Na hostach z du\u017c\u0105 rezerw\u0105 mocy obliczeniowej procesora jest to <strong>bardziej dochodowy<\/strong> Kompromis. ZRAM udost\u0119pnia skompresowan\u0105 pami\u0119\u0107 wymiany bezpo\u015brednio w pami\u0119ci RAM \u2013 idealne rozwi\u0105zanie w przypadku obci\u0105\u017ce\u0144 o charakterze impulsowym lub bardzo ma\u0142ych maszyn wirtualnych, w kt\u00f3rych wol\u0119 korzysta\u0107 ze skompresowanej pami\u0119ci RAM ni\u017c z powolnych operacji we\/wy. Wa\u017cne: \u015awiadomie wybieram jedn\u0105 z tych koncepcji i ustalam priorytety tak, aby najszybsza \u015bcie\u017cka by\u0142a obs\u0142ugiwana jako pierwsza. Swappiness pozostaje przy tym narz\u0119dziem steruj\u0105cym: nawet przy u\u017cyciu Zswap\/ZRAM chc\u0119 unika\u0107 niepotrzebnych fal odzyskiwania pami\u0119ci.<\/p>\n\n<h2>Pami\u0119\u0107 podr\u0119czna stron, vfs_cache_pressure i trafienia w pami\u0119ci podr\u0119cznej<\/h2>\n\n<p>Wska\u017anik \u201eSwappiness\u201d wsp\u00f3\u0142dzia\u0142a z pami\u0119ci\u0105 podr\u0119czn\u0105 stron (Page Cache), kt\u00f3ra przechowuje pliki i i-w\u0119z\u0142y w pami\u0119ci RAM. Za pomoc\u0105 parametru vm.vfs_cache_pressure kontroluj\u0119, jak agresywnie j\u0105dro opr\u00f3\u017cnia te pami\u0119ci podr\u0119czne w przypadku stron anonimowych. Zbyt wysokie warto\u015bci powoduj\u0105 zbyt szybkie usuwanie pami\u0119ci podr\u0119cznych metadanych, co spowalnia serwery WWW. Zazwyczaj zaczynam od warto\u015bci 50\u2013100, mierz\u0119 wsp\u00f3\u0142czynniki trafie\u0144 w pami\u0119ci podr\u0119cznej i obserwuj\u0119, jak zmieniaj\u0105 si\u0119 op\u00f3\u017anienia w przypadku zasob\u00f3w statycznych i odpowiedzi API. Celem jest utrzymanie cz\u0119sto wykorzystywanych tre\u015bci w pami\u0119ci RAM bez zatykania pami\u0119ci roboczej rzadko u\u017cywanymi stronami. Je\u015bli wska\u017anik trafie\u0144 pozostaje dobry, a operacje wej\u015bcia\/wyj\u015bcia (I\/O) s\u0105 na niskim poziomie, oznacza to, \u017ce wsp\u00f3\u0142dzia\u0142anie jest odpowiednie; w przeciwnym razie dostosowuj\u0119 parametry swappiness i vfs_cache_pressure w pliku <strong>Tandem<\/strong>.<\/p>\n\n<h2>Unikanie zjawiska \u201edirty-writeback\u201d i szczyt\u00f3w obci\u0105\u017cenia we\/wy<\/h2>\n\n<p>\u015acie\u017cki zapisu wp\u0142ywaj\u0105 na op\u00f3\u017anienia w takim samym stopniu jak swap. Za pomoc\u0105 parametr\u00f3w vm.dirty_background_ratio\/bytes i vm.dirty_ratio\/bytes okre\u015blam, jak du\u017ca cz\u0119\u015b\u0107 brudnej pami\u0119ci podr\u0119cznej zostanie zgromadzona, zanim j\u0105dro przyst\u0105pi do zapisu. Preferuj\u0119 warto\u015bci typu *_bytes zamiast warto\u015bci procentowych, aby ustawi\u0107 okre\u015blone limity \u2013 szczeg\u00f3lnie w konfiguracjach z du\u017c\u0105 ilo\u015bci\u0105 pami\u0119ci RAM, gdzie warto\u015bci procentowe mog\u0105 generowa\u0107 ogromne fale zapisu zwrotnego. Cel: ci\u0105g\u0142e, mo\u017cliwe do zaplanowania zapisywanie zamiast sporadycznych szczyt\u00f3w obci\u0105\u017cenia, kt\u00f3re wraz z pami\u0119ci\u0105 wymiany powoduj\u0105 blokady operacji wej\u015bcia\/wyj\u015bcia. Sprawdzam iostat oraz kolejki zapisu zwrotnego i utrzymuj\u0119 warto\u015bci tak, aby dyski SSD\/NVMe by\u0142y stale obci\u0105\u017cone, ale nie <strong>przejechany<\/strong> sta\u0107 si\u0119.<\/p>\n\n<h2>NUMA, odzyskiwanie stref i du\u017ce hosty<\/h2>\n\n<p>W systemach z architektur\u0105 NUMA lokalizacja pami\u0119ci ma znaczenie. Je\u015bli opcja vm.zone_reclaim_mode jest w\u0142\u0105czona, j\u0105dro mo\u017ce bardziej agresywnie odzyskiwa\u0107 pami\u0119\u0107 w lokalnym w\u0119\u017ale NUMA, co niepo\u017c\u0105danie powoduje gwa\u0142towne skoki w procesie odzyskiwania pami\u0119ci. W przypadku wielu obci\u0105\u017ce\u0144 hostingowych wy\u0142\u0105czam funkcj\u0119 Zone Reclaim i pozostawiam rozmieszczenie pami\u0119ci harmonogramowi, aby uzyska\u0107 bardziej stabilne dzia\u0142anie. Dodatkowo sprawdzam opcj\u0119 Transparent Huge Pages (THP): Bazy danych cz\u0119sto lepiej reaguj\u0105 na ustawienie THP=never lub madvise, poniewa\u017c nieplanowana defragmentacja i przydzia\u0142y THP mog\u0105 powodowa\u0107 skoki op\u00f3\u017anie\u0144. Swappiness mo\u017ce by\u0107 idealna \u2013 je\u015bli jednak THP lub zasady NUMA ingeruj\u0105 w ten proces, pozostaj\u0105 <strong>Zacinanie si\u0119<\/strong>.<\/p>\n\n<h2>Jednostki kontener\u00f3w i grup Cgroups<\/h2>\n\n<p>Dzi\u0119ki Cgroups v2 mam do dyspozycji nie tylko parametr host-swappiness, ale tak\u017ce inne narz\u0119dzia: memory.high powoduje \u0142agodne odzyskiwanie pami\u0119ci, memory.max ustanawia twarde limity, a memory.swap.max ogranicza wykorzystanie pami\u0119ci wymiany dla poszczeg\u00f3lnych obci\u0105\u017ce\u0144. W ten spos\u00f3b zapobiegam spowalnianiu hosta przez poszczeg\u00f3lne kontenery korzystaj\u0105ce z pami\u0119ci wymiany. Na w\u0119\u017ale ustawiam niskie warto\u015bci swappiness, a krytycznym obci\u0105\u017ceniom nadaj\u0119 priorytet za pomoc\u0105 memory.low, aby ich hotsety d\u0142u\u017cej pozostawa\u0142y w pami\u0119ci RAM. W Kubernetes zwracam uwag\u0119 na to, jak w\u0119ze\u0142 radzi sobie z pami\u0119ci\u0105 wymiany, i najpierw testuj\u0119 zmiany w pulach nieprodukcyjnych. Wa\u017cne jest ca\u0142o\u015bciowe spojrzenie: parametry hosta, limity cgroup i orkiestrator musz\u0105 do siebie pasowa\u0107, w przeciwnym razie obci\u0105\u017cenie przenosi si\u0119 jedynie z jednego poziomu na <strong>inne<\/strong>.<\/p>\n\n<h2>Wdro\u017cenie, automatyzacja i nawr\u00f3t<\/h2>\n\n<p>Wprowadzam zmiany dotycz\u0105ce Swappiness w spos\u00f3b kontrolowany, tak jak ka\u017cd\u0105 optymalizacj\u0119 wydajno\u015bci: najpierw na niewielkiej grupie niemal identycznych w\u0119z\u0142\u00f3w (Canary), a nast\u0119pnie stopniowo na szersz\u0105 skal\u0119. Systemd-sysctl lub system zarz\u0105dzania konfiguracj\u0105 zapewniaj\u0105 powtarzalne wdra\u017canie tych warto\u015bci. Dokumentuj\u0119 warto\u015bci pocz\u0105tkowe i docelowe, daty i godziny, hosty, kt\u00f3rych to dotyczy, oraz <strong>Metryki<\/strong>. Na wypadek nawrotu planuj\u0119 z wyprzedzeniem odpowiedni\u0105 zmian\u0119 (np. sysctl vm.swappiness=60) i zachowuj\u0119 poprzednie pliki sysctl. W oknach serwisowych celowo mierz\u0119 typowe scenariusze obci\u0105\u017cenia, aby nie pomyli\u0107 zmian z wahaniami o porze dnia lub ruchem sieciowym. Tylko w ten spos\u00f3b decyzje pozostaj\u0105 rzetelne i sp\u00f3jne w zespole <strong>zrozumia\u0142y<\/strong>.<\/p>\n\n<h2>Cz\u0119ste nieporozumienia i antywzorce<\/h2>\n\n<ul>\n  <li><strong>\u201eSwappiness=0 wy\u0142\u0105cza pami\u0119\u0107 wymiany\u201c<\/strong>: Nie, j\u0105dro nadal korzysta z pami\u0119ci wymiany \u2013 ale bardzo oszcz\u0119dnie.<\/li>\n  <li><strong>\u201eIm wi\u0119cej swap\u00f3w, tym wi\u0119ksze bezpiecze\u0144stwo\u201c<\/strong>: Zbyt du\u017ca ilo\u015b\u0107 pami\u0119ci wymiany wyd\u0142u\u017ca fazy obci\u0105\u017cenia i maskuje w\u0105skie gard\u0142a pami\u0119ci RAM, zamiast je eliminowa\u0107.<\/li>\n  <li><strong>\u201eDzi\u0119ki NVMe swapowanie nie ma znaczenia\u201c<\/strong>: NVMe jest szybkie, ale o kilka rz\u0119d\u00f3w wielko\u015bci wolniejsze od pami\u0119ci RAM. Op\u00f3\u017anienia s\u0105 nadal odczuwalne.<\/li>\n  <li><strong>\u201eJedna warto\u015b\u0107 dla wszystkich serwer\u00f3w\u201c<\/strong>: Obci\u0105\u017cenia s\u0105 bardzo zr\u00f3\u017cnicowane. Bez pomiar\u00f3w optymalizacja sprowadza si\u0119 do przypadku.<\/li>\n  <li><strong>\u201eSwappiness rozwi\u0105zuje ka\u017cdy problem z op\u00f3\u017anieniami\u201c<\/strong>: Cz\u0119sto problemy wynikaj\u0105 z trafie\u0144 w pami\u0119ci podr\u0119cznej, operacji writeback, THP, plan\u00f3w zapyta\u0144 lub \u015bcie\u017cek sieciowych.<\/li>\n<\/ul>\n\n<h2>Podsumowanie dla szybkiego startu<\/h2>\n\n<p>Zazwyczaj ustawiam warto\u015b\u0107 vm.swappiness na 10\u201320 dla serwer\u00f3w WWW i na 0\u201310 dla baz danych, testuj\u0119 efekt i obserwuj\u0119 operacje wej\u015bcia\/wyj\u015bcia, op\u00f3\u017anienia oraz <strong>Zamiana<\/strong>-udzia\u0142. Ostateczn\u0105 warto\u015b\u0107 zapisuj\u0119 za pomoc\u0105 sysctl w pliku \/etc\/sysctl.d\/ i dbam o to, by zmiany by\u0142y przejrzyste. R\u00f3wnolegle dbam o odpowiedni\u0105 konfiguracj\u0119 partycji swap: odpowiedni rozmiar, szybki no\u015bnik, sensowne priorytety. W przypadku obci\u0105\u017cenia pami\u0119ci zwracam dodatkowo uwag\u0119 na pami\u0119\u0107 podr\u0119czn\u0105 stron (Page Cache) i jej zachowanie; dobrym punktem wyj\u015bcia jest ten przegl\u0105d dotycz\u0105cy <a href=\"https:\/\/webhosting.de\/pl\/usuwanie-pamieci-podrecznej-stron-serwera-linux-optymalizacja-drukowania-insight\/\">Usuwanie danych z pami\u0119ci podr\u0119cznej stron<\/a>, kt\u00f3ry pomaga mi w analizie przyczyn oraz <strong>Kontekst<\/strong> istnieje. Dzi\u0119ki takiemu podej\u015bciu uzyskuj\u0119 niezawodne czasy odpowiedzi, zapobiegam nag\u0142ym wzrostom obci\u0105\u017cenia pami\u0119ci wymiany i efektywnie wykorzystuj\u0119 dost\u0119pn\u0105 pami\u0119\u0107 RAM.<\/p>","protected":false},"excerpt":{"rendered":"<p>Dowiedz si\u0119, jak precyzyjnie zoptymalizowa\u0107 parametr vm.swappiness pod k\u0105tem swojego serwera hostingowego z systemem Linux oraz jak znacznie poprawi\u0107 wydajno\u015b\u0107 serwera dzi\u0119ki odpowiedniemu dostrojeniu partycji swap w systemie Linux.<\/p>","protected":false},"author":1,"featured_media":20859,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-20866","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":"149","_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":"vm.swappiness","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":"20859","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20866","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=20866"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20866\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/20859"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=20866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=20866"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=20866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}