{"id":21291,"date":"2026-09-11T11:51:31","date_gmt":"2026-09-11T09:51:31","guid":{"rendered":"https:\/\/webhosting.de\/redis-memory-fragmentation-ratio-richtig-interpretieren-speicheranalyse\/"},"modified":"2026-09-11T11:51:31","modified_gmt":"2026-09-11T09:51:31","slug":"jak-prawidlowo-interpretowac-wskaznik-fragmentacji-pamieci-redis-analiza-pamieci","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/redis-memory-fragmentation-ratio-richtig-interpretieren-speicheranalyse\/","title":{"rendered":"Jak prawid\u0142owo interpretowa\u0107 i optymalizowa\u0107 wska\u017anik fragmentacji pami\u0119ci Redis"},"content":{"rendered":"<p><strong>Fragmentacja w Redis<\/strong> okre\u015bla, ile pami\u0119ci operacyjnej traci si\u0119 mi\u0119dzy przydzielonym przez system operacyjny RSS a faktycznie wykorzystywanymi danymi Redis oraz jak unikn\u0105\u0107 op\u00f3\u017anie\u0144, korzystania z pami\u0119ci wymiany i awarii. Wyja\u015bni\u0119 to <strong>Wska\u017anik fragmentacji pami\u0119ci Redis<\/strong> ma charakter praktyczny, wskazuje sensowne warto\u015bci graniczne i podaje jasne wytyczne dotycz\u0105ce optymalizacji, monitorowania i modelowania danych.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<ul>\n  <li><strong>Definicja<\/strong>: Prawid\u0142owe odczytanie stosunku warto\u015bci used_memory_rss do used_memory.<\/li>\n  <li><strong>Warto\u015bci graniczne<\/strong>: Dzia\u0142a\u0107 przy warto\u015bci powy\u017cej 1,5, a poni\u017cej 1,0 natychmiast sprawdzi\u0107.<\/li>\n  <li><strong>Przyczyny<\/strong>: Zmienne rozmiary obiekt\u00f3w, fale gaszenia, d\u0142ugi czas trwania.<\/li>\n  <li><strong>\u015arodki<\/strong>: Active Defrag, planowanie bud\u017cetu, optymalizacja modelu danych.<\/li>\n  <li><strong>Monitoring<\/strong>: Ustawi\u0107 alerty dla wska\u017anik\u00f3w Ratio i warto\u015bci Allocator.<\/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\/09\/redis-analyse-4032.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Co dok\u0142adnie oznacza wska\u017anik mem_fragmentation_ratio?<\/h2>\n\n<p>Korzystam z tej warto\u015bci charakterystycznej <strong>mem_fragmentation_ratio<\/strong>, aby sprawdzi\u0107 stosunek RSS do wykorzystania danych. Iloraz z <strong>used_memory_rss<\/strong> podzielone przez <strong>used_memory<\/strong> pokazuje, jak efektywnie Redis wykorzystuje pami\u0119\u0107 RAM. Warto\u015bci zbli\u017cone do 1,0 wskazuj\u0105 na <strong>efektywny<\/strong> Wykorzystanie pami\u0119ci z niewielk\u0105 liczb\u0105 pustych obszar\u00f3w. Wysokie warto\u015bci wskazuj\u0105, \u017ce w procesie wyst\u0119puje wiele wolnych obszar\u00f3w, kt\u00f3rych alokator nie mo\u017ce ponownie wykorzysta\u0107. Nigdy nie oceniam tej warto\u015bci w oderwaniu, lecz w po\u0142\u0105czeniu z rozmiarem, obci\u0105\u017ceniem i <strong>Alokator<\/strong>-wska\u017aniki.<\/p>\n\n<h2>W\u0142a\u015bciwa interpretacja warto\u015bci orientacyjnych<\/h2>\n\n<p>Porz\u0105dkuj\u0119 <strong>Stosunek<\/strong> na sta\u0142e strefy, aby decyzje by\u0142y powtarzalne. Niewielkie nadwy\u017cki rz\u0119du 1,1 s\u0105 dla mnie raczej norm\u0105 <strong>Nad g\u0142ow\u0105<\/strong>. Przy warto\u015bci oko\u0142o 1,5 planuj\u0119 podj\u0119cie odpowiednich dzia\u0142a\u0144, poniewa\u017c w przeciwnym razie pami\u0119\u0107 RAM ulegnie utracie lub system zbli\u017cy si\u0119 do granic OOM. Przy warto\u015bci poni\u017cej 1,0 reaguj\u0119 natychmiast, poniewa\u017c oznacza to, \u017ce <strong>Zamiana<\/strong> . Poni\u017csza tabela zawiera zestawienie typowych obszar\u00f3w i dzia\u0142a\u0144.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th><strong>Stosunek<\/strong><\/th>\n      <th><strong>Znaczenie<\/strong><\/th>\n      <th><strong>\u015brodek natychmiastowy<\/strong><\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Poni\u017cej 1,0<\/td>\n      <td><strong>Zamiana<\/strong>-ryzyko, du\u017ca utajno\u015b\u0107<\/td>\n      <td>Sprawd\u017a pami\u0119\u0107 RAM\/Maxmemory, zmniejsz ilo\u015b\u0107 danych<\/td>\n    <\/tr>\n    <tr>\n      <td>1,0\u20131,1<\/td>\n      <td><strong>Zdrowy<\/strong> z niewielkim obci\u0105\u017ceniem g\u00f3rnym<\/td>\n      <td>Nadal obserwowa\u0107, nic pilnego<\/td>\n    <\/tr>\n    <tr>\n      <td>1,1\u20131,5<\/td>\n      <td><strong>Normalny<\/strong>, umiarkowana fragmentacja<\/td>\n      <td>Obserwowa\u0107 trendy, notowa\u0107 przyczyny<\/td>\n    <\/tr>\n    <tr>\n      <td>Ponad 1,5<\/td>\n      <td><strong>Zwi\u0119kszone<\/strong>, marnotrawstwo pami\u0119ci<\/td>\n      <td>Active Defrag, sprawd\u017a model, przetestuj funkcj\u0119 Purge<\/td>\n    <\/tr>\n    <tr>\n      <td>Ponad 2,0<\/td>\n      <td><strong>Wysoki<\/strong>, presja zwi\u0105zana z wydajno\u015bci\u0105<\/td>\n      <td>Agresywna defragmentacja, rozwa\u017cy\u0107 ponowne uruchomienie systemu<\/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\/09\/redis_meeting_optimization_6723.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Jak powstaje fragmentacja<\/h2>\n\n<p>Widz\u0119 wysokie <strong>Fragmentacja<\/strong> zw\u0142aszcza w przypadku cz\u0119stych operacji zapisu i kasowania. Alokator, zazwyczaj <strong>jemalloc<\/strong>, tworzy pami\u0119\u0107 w arenach, kt\u00f3ra nie zawsze jest idealnie poddawana recyklingowi. Gdy klucze si\u0119 kurcz\u0105, powi\u0119kszaj\u0105 lub ca\u0142kowicie znikaj\u0105, pozostaj\u0105 po nich luki. Nowe obiekty cz\u0119sto nie mieszcz\u0105 si\u0119 w tych lukach, przez co RSS pozostaje wy\u017cszy ni\u017c rzeczywiste dane. Przy d\u0142ugim czasie dzia\u0142ania luki te si\u0119 kumuluj\u0105 <strong>Luki<\/strong>, a\u017c wska\u017anik wyra\u017anie wzro\u015bnie.<\/p>\n\n<h2>Objawy i zagro\u017cenia zwi\u0105zane z eksploatacj\u0105<\/h2>\n\n<p>Rosn\u0105ce <strong>Op\u00f3\u017anienie<\/strong>, jako pierwsze rzucaj\u0105 mi si\u0119 w oczy nag\u0142e b\u0142\u0119dy OOM i rosn\u0105ca warto\u015b\u0107 RSS. Nawet je\u015bli used_memory pozostaje na umiarkowanym poziomie, instancja mo\u017ce <strong>RAM<\/strong>-osi\u0105ga granice swoich mo\u017cliwo\u015bci. Gdy system zaczyna wtedy przenosi\u0107 strony do pami\u0119ci podr\u0119cznej, czasy odpowiedzi gwa\u0142townie rosn\u0105. Us\u0142ugi reaguj\u0105 opieszale, a liczba przekrocze\u0144 limit\u00f3w czasu wzrasta, co zak\u0142\u00f3ca dzia\u0142anie aplikacji. Dlatego zawsze zwracam uwag\u0119 na <strong>Zamiana<\/strong>-Wska\u017aniki na pierwszy rzut oka.<\/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\/09\/redis-memory-optimization-8486.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Bezpieczne odczytywanie pami\u0119ci INFO MEMORY<\/h2>\n\n<p>O <strong>INFO<\/strong> Je\u015bli chodzi o pami\u0119\u0107, sprawdzam warto\u015bci used_memory, used_memory_rss oraz mem_fragmentation_ratio. Ponadto zwracam uwag\u0119 na <strong>wsp\u00f3\u0142czynnik alokacji fragment\u00f3w<\/strong> oraz allocator_rss_ratio, aby wykry\u0107 r\u00f3\u017cnice mi\u0119dzy stert\u0105 a systemem operacyjnym. Wysoka warto\u015b\u0107 mem_fragmentation_ratio przy niebudz\u0105cej zastrze\u017ce\u0144 warto\u015bci Allocator wskazuje mi, \u017ce system operacyjny nie odzyskuje stron w odpowiedni spos\u00f3b. Z kolei wysokie warto\u015bci Allocator wskazuj\u0105 na wewn\u0119trzne <strong>Sterta<\/strong>-fragmentacja. Dokumentuj\u0119 te kombinacje, aby uwidoczni\u0107 trendy i zapewni\u0107 precyzyjne dzia\u0142anie podejmowanych \u015brodk\u00f3w.<\/p>\n\n<h2>Aktywna defragmentacja w praktyce<\/h2>\n\n<p>Aktywuj\u0119 <strong>Aktywny<\/strong> Defragmentacja ma miejsce, gdy wsp\u00f3\u0142czynnik obci\u0105\u017cenia ro\u015bnie lub obci\u0105\u017cenia ulegaj\u0105 znacznym wahaniom. W tym procesie Redis reorganizuje obiekty i grupuje je w bardziej zwartych blokach, aby system operacyjny m\u00f3g\u0142 zwolni\u0107 strony pami\u0119ci. Testuj\u0119 ten mechanizm stopniowo, aby utrzyma\u0107 obci\u0105\u017cenie procesora w rozs\u0105dnych granicach. Na pocz\u0105tek korzystam ze sprawdzonych ustawie\u0144, a nast\u0119pnie dokonuj\u0119 precyzyjnych dostosowa\u0144. Dobrym wprowadzeniem do tematu jest ten <a href=\"https:\/\/webhosting.de\/pl\/redis-aktywna-defragmentacja-zmniejszenie-fragmentacji-pamieci-optymalizacja-sterty\/\">Aktywna defragmentacja<\/a>-Artyku\u0142.<\/p>\n\n<pre><code>CONFIG SET activedefrag yes\nCONFIG SET active-defrag-ignore-bytes 100mb\nCONFIG SET active-defrag-threshold-lower 10\nCONFIG SET active-defrag-threshold-upper 100\nCONFIG SET active-defrag-cycle-min 5\nCONFIG SET active-defrag-cycle-max 75\n<\/code><\/pre>\n\n<p>Ustawi\u0142em <strong>Warto\u015bci graniczne<\/strong> tak, aby defragmentacja uruchamia\u0142a si\u0119 tylko w razie rzeczywistej potrzeby. Warto\u015bci cyklu ograniczaj\u0105 obci\u0105\u017cenie procesora, aby nie wp\u0142ywa\u0142o to negatywnie na szczytowe obci\u0105\u017cenia. Po wprowadzeniu zmian obserwuj\u0119 wska\u017aniki przez kilka godzin. Dopiero gdy wska\u017anik, op\u00f3\u017anienie i obci\u0105\u017cenie procesora wygl\u0105daj\u0105 na zr\u00f3wnowa\u017cone, zatwierdzam <strong>Warto\u015bci<\/strong> na sta\u0142e.<\/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\/09\/redis_optimierung_3021.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Precyzyjna regulacja parametr\u00f3w bez skutk\u00f3w ubocznych<\/h2>\n\n<p>Podnosz\u0119 <strong>Warto\u015bci progowe<\/strong> tylko ma\u0142ymi krokami, aby unikn\u0105\u0107 skutk\u00f3w ubocznych. Zbyt intensywny cykl wprawdzie zmniejsza fragmentacj\u0119, ale obci\u0105\u017ca <strong>CPU<\/strong> wyra\u017anie odczuwalne. W godzinach szczytu przesuwam testy na spokojniejsze przedzia\u0142y czasowe, aby efekty pozosta\u0142y dobrze mierzalne. Pomocne jest por\u00f3wnanie przed i po dostosowaniu przy identycznych <strong>Obci\u0105\u017cenie prac\u0105<\/strong>. W ten spos\u00f3b mog\u0119 sprawdzi\u0107, czy program Defrag rzeczywi\u015bcie obni\u017ca wsp\u00f3\u0142czynnik, czy tylko przenosi obci\u0105\u017cenie.<\/p>\n\n<h2>\u015awiadome korzystanie z Lazy Free<\/h2>\n\n<p>U\u017cywam <strong>Lazy Free<\/strong>, gdy wiele du\u017cych kluczy znika lub zostaje przemianowanych jednocze\u015bnie. Zamiast blokowa\u0107 si\u0119 synchronicznie, <em>UNLINK<\/em>, <em>FLUSHDB ASYNC<\/em> oraz <em>FLUSHALL ASYNC<\/em> Zwolnienie pami\u0119ci w tle. Zmniejsza to szczytowe warto\u015bci op\u00f3\u017anie\u0144, ale mo\u017ce chwilowo zwi\u0119kszy\u0107 fragmentacj\u0119, poniewa\u017c strony s\u0105 najpierw odzyskiwane asynchronicznie. Steruj\u0119 tym zachowaniem za pomoc\u0105 parametr\u00f3w lazyfree (np. lazyfree-lazy-eviction, lazyfree-lazy-server-del), testuj\u0119 wp\u0142yw na obci\u0105\u017cenie procesora i monitoruj\u0119 <strong>lazyfree_pending_objects<\/strong> w pami\u0119ci INFO. Je\u015bli pozostaje wiele obiekt\u00f3w oczekuj\u0105cych, nieznacznie zwi\u0119kszam bud\u017cet defragmentacji lub rozk\u0142adam fale usuwania, aby sterta nie rozpad\u0142a si\u0119 na wiele ma\u0142ych luk.<\/p>\n\n<h2>Zaplanuj r\u0119czne czyszczenie i ponowne uruchomienie<\/h2>\n\n<p>Je\u015bli wska\u017anik Ratio poszybuje w g\u00f3r\u0119, podejm\u0119 zdecydowane dzia\u0142ania <strong>D\u017awignia<\/strong>. Za pomoc\u0105 polecenia MEMORY PURGE nakazuj\u0119 alokatorowi zwrot nieu\u017cywanych stron do systemu operacyjnego. Polecenie DEBUG MALLOC-STATS pozwala mi uzyska\u0107 bardziej szczeg\u00f3\u0142owy wgl\u0105d w <strong>Areny<\/strong> oraz wzorce alokacji. Je\u015bli wska\u017anik utrzyma si\u0119 powy\u017cej 2,0, planuj\u0119 skoordynowany restart po utworzeniu migawki lub synchronizacji AOF. Ten krok wymaga <strong>Struktura pami\u0119ci<\/strong> Wr\u00f3\u0107 i od razu pobierz RSS.<\/p>\n\n<h2>Rozs\u0105dne planowanie bud\u017cetu na pami\u0119\u0107 Maxmemory<\/h2>\n\n<p>Planuj\u0119 <strong>maxmemory<\/strong> nigdy nie si\u0119ga fizycznego limitu pami\u0119ci RAM. Zgodnie z praktyczn\u0105 zasad\u0105 rezerwuj\u0119 oko\u0142o 60\u201365 % na dane, 5\u201310 % jako bufor fragmentacji oraz 10\u201320 % na <strong>Kopiowanie przy zapisie<\/strong>. Reszta pozostaje na potrzeby systemu operacyjnego, agent\u00f3w i dzia\u0142ania serwera. Taki podzia\u0142 zapobiega <strong>OOM<\/strong>-Niespodzianki i odci\u0105\u017ca program Defrag. Praktyczny przewodnik znalaz\u0142em tutaj: <a href=\"https:\/\/webhosting.de\/pl\/redis-zarzadzanie-pamiecia-optymalna-konfiguracja-pamieci-wydajnosc-pamiec-podreczna\/\">Optymalna konfiguracja pami\u0119ci<\/a>.<\/p>\n\n<h2>Trwa\u0142o\u015b\u0107, RDB\/AOF i Copy-on-Write<\/h2>\n\n<p>Zawsze bior\u0119 pod uwag\u0119 skutki <strong>Wytrwa\u0142o\u015b\u0107<\/strong> na fragmentacj\u0119. W przypadku operacji BGSAVE i przepisywania AOF mechanizm Copy-on-Write duplikuje zmienione strony. Na tym etapie wzrasta warto\u015b\u0107 RSS, mimo \u017ce used_memory prawie nie ro\u015bnie. Dlatego planuj\u0119 przeprowadza\u0107 pe\u0142ne przepisywanie w spokojnych przedzia\u0142ach czasowych, sprawdzam <em>auto-aof-rewrite-percentage<\/em> oraz <em>-min-size<\/em> i zapewniam zapas pami\u0119ci dla CoW. Intensywne szczyty zapisu podczas przepisywania powoduj\u0105 szybkie rozpadanie si\u0119 obszar\u00f3w; p\u00f3\u017aniejsza defragmentacja ponownie wype\u0142nia RSS. Na replikach szczeg\u00f3lnie bacznie obserwuj\u0119 pierwsz\u0105 pe\u0142n\u0105 resynchronizacj\u0119: du\u017ce importy zbiorcze w po\u0142\u0105czeniu z CoW s\u0105 klasycznym czynnikiem powoduj\u0105cym kr\u00f3tkotrwa\u0142e wysokie <strong>mem_fragmentation_ratio<\/strong>. Je\u015bli po zako\u0144czeniu warto\u015b\u0107 pozostaje podwy\u017cszona, uruchamiam kr\u00f3tk\u0105 defragmentacj\u0119 lub sprawdzam <em>CZYSTKA PAMI\u0118CI<\/em>.<\/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\/09\/redis_optimierung_desktop_4253.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Poni\u017cej 1,0: Swap stanowi hamulec<\/h2>\n\n<p>Je\u015bli wska\u017anik spadnie poni\u017cej 1,0, nast\u0119puje hamowanie <strong>Zamiana<\/strong> system. Ka\u017cda runda b\u0142\u0119du strony zajmuje sporo czasu i przekracza docelowe warto\u015bci op\u00f3\u017anienia. Sprawdzam wtedy stan pami\u0119ci RAM i zmniejszam <strong>maxmemory<\/strong> lub zmniejszam ilo\u015b\u0107 danych w instancji. Dodatkowo sprawdzam parametry systemowe, takie jak vm.swappiness, aby j\u0105dro rzadziej <strong>outsourcuje<\/strong>. Celem pozostaje utrzymanie instancji wy\u0142\u0105cznie w pami\u0119ci RAM i unikni\u0119cie operacji przywracania stron.<\/p>\n\n<h2>Uwzgl\u0119dnienie ustawie\u0144 kontener\u00f3w i j\u0105dra<\/h2>\n\n<p>W kontenerach zawsze mierz\u0119 fragmentacj\u0119 w kontek\u015bcie <strong>cgroups<\/strong>-Limity. Por\u00f3wnuj\u0119 RSS z limitami pami\u0119ci i ustawiam <em>vm.overcommit_memory=1<\/em>, aby Redis nie uleg\u0142 awarii z powodu overcommitu. <strong>Przejrzyste ogromne strony<\/strong> Wy\u0142\u0105czam je, poniewa\u017c powoduj\u0105 nadmierne powi\u0119kszenie rozmiar\u00f3w plik\u00f3w RSS i utrudniaj\u0105 defragmentacj\u0119. Zauwa\u017cy\u0142em r\u00f3wnie\u017c, \u017ce <em>oom_kill<\/em>-licznik cgroup i reaguj\u0119 na wczesnym etapie, gdy j\u0105dro zaczyna odczuwa\u0107 obci\u0105\u017cenie. W Kubernetes dbam o realistyczne warto\u015bci \u017c\u0105danych limit\u00f3w i rezerwuj\u0119 zapas mocy obliczeniowej dla ka\u017cdego poda, aby operacje BGSAVE i Rewrites nie osi\u0105ga\u0142y niepo\u017c\u0105danych granic. Wa\u017cne: izolacja kontener\u00f3w nie zmienia wewn\u0119trznej logiki sterty \u2013 defragmentacja, Lazy Free i aktualizacja modelu pozostaj\u0105 g\u0142\u00f3wnymi narz\u0119dziami przeciwdzia\u0142aj\u0105cymi <strong>Fragmentacja<\/strong>.<\/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\/09\/redis-optimierung-4931.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Optymalizacja modelu danych i kluczowych wska\u017anik\u00f3w<\/h2>\n\n<p>Trzymam <strong>obiekty<\/strong> ma\u0142e i jednolite, aby alokator mniej si\u0119 rozprasza\u0142. Bardzo du\u017ce listy, zbiory lub tablice hashowe dziel\u0119 na kilka mniejszych kluczy. Zamiast ogromnych ci\u0105g\u00f3w JSON u\u017cywam kompaktowych <strong>Typy danych<\/strong> tak jak w przypadku skr\u00f3t\u00f3w z polami, kt\u00f3re rzadziej ulegaj\u0105 zmianie. W przypadku sesji, licznik\u00f3w i pami\u0119ci podr\u0119cznych ustalam standardowe rozmiary, aby alokacje by\u0142y bardziej przewidywalne. W ten spos\u00f3b zmniejszam <strong>Fragmentacja<\/strong>, zanim zaczn\u0119 zmienia\u0107 ustawienia.<\/p>\n\n<h2>Polityka eksmisji i przebieg procedury<\/h2>\n\n<p>Wybieram <strong>Polityka eksmisji<\/strong> dostosowane do obci\u0105\u017cenia. W przypadku silnie zmiennych zbior\u00f3w kluczy warianty LRU\/LFU rozk\u0142adaj\u0105 usuwanie obiekt\u00f3w bardziej r\u00f3wnomiernie i pozwalaj\u0105 unikn\u0105\u0107 skok\u00f3w. Unikam masowego wygasania o pe\u0142nej godzinie i rozk\u0142adam warto\u015bci TTL tak, aby funkcja Active-Expire nie usuwa\u0142a tysi\u0119cy obiekt\u00f3w jednocze\u015bnie. Parametry takie jak <em>hz<\/em> oraz <em>active-expire-effort<\/em> reguluj\u0119 to tylko ostro\u017cnie, \u017ceby nie przeci\u0105\u017ca\u0107 procesora. Spokojny wzorzec dzia\u0142ania zapewnia przewidywalne przydzia\u0142y \u2013 i w\u0142a\u015bnie to sprawia, \u017ce <strong>mem_fragmentation_ratio<\/strong> mieszkanie.<\/p>\n\n<h2>Klaster Redis i sharding<\/h2>\n\n<p>Je\u015bli chodzi o rozw\u00f3j, stawiam na <strong>Sharding<\/strong> lub klastry, poniewa\u017c mniejsze sterty na ka\u017cdy fragment powoduj\u0105 mniej d\u0142ugotrwa\u0142ych luk. Podczas r\u00f3wnowa\u017cenia planuj\u0119 okna migracji tak, aby szczyty zapisu i operacje przepisywania nie kolidowa\u0142y ze sob\u0105. Du\u017ce fale operacji MIGRATE mog\u0105 tymczasowo zwi\u0119kszy\u0107 RSS na w\u0119z\u0142ach docelowych; w tym czasie obserwuj\u0119 warto\u015bci alokatora i uruchamiam defragmentacj\u0119 po przeniesieniu. W przypadku replik uwzgl\u0119dniam dodatkow\u0105 pami\u0119\u0107 na zaleg\u0142o\u015bci i bufory replik \u2013 to r\u00f3wnie\u017c ma wp\u0142yw na <strong>Maxmemory<\/strong>-bud\u017cetowanie.<\/p>\n\n<h2>Pog\u0142\u0119bienie wiedzy na temat obserwowalno\u015bci: MEMORY STATS i op\u00f3\u017anienia<\/h2>\n\n<ul>\n  <li>U\u017cywam <strong>STATYSTYKI PAMI\u0118CI<\/strong>, aby sprawdzi\u0107 obci\u0105\u017cenie, udzia\u0142 zbior\u00f3w danych oraz szczeg\u00f3\u0142y dotycz\u0105ce fragmentacji. Pomaga to oddzieli\u0107 fragmentacj\u0119 sterty od fragmentacji spowodowanej przez system operacyjny.<\/li>\n  <li>Z <strong>MEMORY DOCTOR<\/strong> dostaj\u0119 wskaz\u00f3wki, czy w danym momencie bardziej op\u0142aca si\u0119 zastosowa\u0107 model danych, defragmentacj\u0119 czy czyszczenie.<\/li>\n  <li>Koreluj\u0119 <strong>op\u00f3\u017anienie<\/strong>-wska\u017aniki (np. latency doctor) z fazami defragmentacji i przepisywania, w celu wykrycia efekt\u00f3w ubocznych.<\/li>\n  <li>Der <strong>SLOWLOG<\/strong> pokazuje mi, czy polecenia wypadaj\u0105 z rytmu z powodu operacji pami\u0119ciowych \u2013 zw\u0142aszcza polecenia DEL, UNLINK oraz d\u0142ugie serie HSET\/HGET.<\/li>\n<\/ul>\n\n<h2>Praktyczny przewodnik dotycz\u0105cy eksploatacji<\/h2>\n\n<ul>\n  <li>Punkt odniesienia: wykona\u0107 kopi\u0119 zapasow\u0105 pami\u0119ci INFO, udokumentowa\u0107 wsp\u00f3\u0142czynnik, warto\u015bci alokatora oraz zbi\u00f3r danych\/narzut.<\/li>\n  <li>Bud\u017cet: ustawi\u0107 `maxmemory` na realistyczne warto\u015bci: 60\u201365 % danych, 5\u201310 % fragmentacji oraz 10\u201320 % CoW.<\/li>\n  <li>Defragmentacja: w\u0142\u0105czy\u0107 funkcj\u0119 activedefrag, cyklicznie ostro\u017cnie zwi\u0119ksza\u0107 intensywno\u015b\u0107, mierzy\u0107 efekty przez kilka godzin.<\/li>\n  <li>Model danych: dzieli\u0107 du\u017ce obiekty, unika\u0107 blok\u00f3w JSON, ujednolici\u0107 rozmiary.<\/li>\n  <li>Wygasanie: roz\u0142o\u017cy\u0107 czasy TTL, odpowiednio dobra\u0107 polityk\u0119 usuwania, unika\u0107 masowego usuwania.<\/li>\n  <li>Trwa\u0142o\u015b\u0107: zaplanowa\u0107 przepisywanie, zapewni\u0107 wolne miejsce, po zako\u0144czeniu sprawdzi\u0107 defragmentacj\u0119.<\/li>\n  <li>Oczyszczanie\/ponowne uruchomienie: je\u015bli wska\u017anik Ratio &gt; 2,0, nale\u017cy spr\u00f3bowa\u0107 przeprowadzi\u0107 oczyszczanie, w przeciwnym razie nale\u017cy wykona\u0107 uporz\u0105dkowane ponowne uruchomienie.<\/li>\n  <li>Kontener: wy\u0142\u0105cz THP, w\u0142\u0105cz Overcommit, limity\/\u017c\u0105dania z rezerw\u0105; \u015bci\u015ble ogranicz swap.<\/li>\n  <li>Monitorowanie: alerty przy warto\u015bciach 1,5\/2,0\/poni\u017cej 1,0; analiza trend\u00f3w wed\u0142ug wdro\u017ce\u0144 i partii.<\/li>\n<\/ul>\n\n<h2>Przyk\u0142ad: Z 1,8 do 1,2 w ci\u0105gu 24 godzin<\/h2>\n\n<p>W instancji o pojemno\u015bci 64 GB (maxmemory 40 GB) wzros\u0142a <strong>mem_fragmentation_ratio<\/strong> do 1,8, mimo \u017ce warto\u015b\u0107 used_memory wynosi\u0142a 28\u201330 GB. Najpierw <em>activedefrag<\/em> W\u0142\u0105czy\u0142em t\u0119 funkcj\u0119 (cycle-min 5, cycle-max 50) i przenios\u0142em czas nocnego przepisywania plik\u00f3w AOF na mniej obci\u0105\u017cony okres. Nast\u0119pnie wyr\u00f3wna\u0142em czasy TTL, kt\u00f3re dotychczas wygasa\u0142y co godzin\u0119, i zast\u0105pi\u0142em kilka ogromnych warto\u015bci JSON skr\u00f3tami o sta\u0142ej wielko\u015bci p\u00f3l. Ukierunkowane <em>CZYSTKA PAMI\u0118CI<\/em> Po osi\u0105gni\u0119ciu szczytowego obci\u0105\u017cenia system udost\u0119pni\u0142 dodatkowo pami\u0119\u0107 RSS. Wynik: po 24 godzinach wska\u017anik stabilnie spad\u0142 do ~1,2, szczyty op\u00f3\u017anie\u0144 znikn\u0119\u0142y, a pami\u0119\u0107 RAM hosta zyska\u0142a ~8 GB wolnego miejsca. <strong>Alokator<\/strong>- Potwierdzono wyniki: mniejsza fragmentacja sterty, RSS systemu operacyjnego w normie.<\/p>\n\n<h2>Jak sensownie por\u00f3wna\u0107 \u015brodowiska hostingowe<\/h2>\n\n<p>Dbam o to, by by\u0142o wystarczaj\u0105co du\u017co <strong>RAM<\/strong>, przewidywalne obci\u0105\u017cenie procesora i stabilne warto\u015bci operacji wej\u015bcia\/wyj\u015bcia, je\u015bli umieszcz\u0119 Redis u dostawcy us\u0142ug hostingowych. Dedykowane zasoby i elastyczne mo\u017cliwo\u015bci rozbudowy zapobiegaj\u0105 w\u0105skim gard\u0142om w miar\u0119 rozwoju. Warto stosowa\u0107 jasne wska\u017aniki dotycz\u0105ce RSS, <strong>Zamiana<\/strong> oraz limity, dzi\u0119ki czemu mog\u0119 wcze\u015bnie wykrywa\u0107 w\u0105skie gard\u0142a. Je\u015bli chodzi o niemieckie rozwi\u0105zania, polecam webhoster.de, poniewa\u017c zapewnia on niezawodny dost\u0119p do zasob\u00f3w. Dobrze zorganizowana platforma utrzymuje <strong>Fragmentacja<\/strong>-warto\u015b\u0107 w normie.<\/p>\n\n<h2>Podsumowanie<\/h2>\n\n<p>Czytam <strong>Redis<\/strong> Wska\u017anik fragmentacji pami\u0119ci jako sygna\u0142 ostrzegawczy wskazuj\u0105cy na utrat\u0119 pami\u0119ci RAM i op\u00f3\u017anienia. Warto\u015bci bliskie 1,0 s\u0105 prawid\u0142owe; przy warto\u015bci powy\u017cej 1,5 uruchamiam defragmentacj\u0119 i dostosowuj\u0119 model, a poni\u017cej 1,0 zatrzymuj\u0119 proces. <strong>Zamiana<\/strong> natychmiast. Dzi\u0119ki aktywnej defragmentacji, inteligentnemu zarz\u0105dzaniu pami\u0119ci\u0105 (Maxmemory) oraz zwartym strukturom danych utrzymuj\u0119 <strong>Pami\u0119\u0107<\/strong>-Wysoka wydajno\u015b\u0107. Ci\u0105g\u0142e monitorowanie pozwala wykrywa\u0107 wzorce i zapobiega podejmowaniu pochopnych dzia\u0142a\u0144 dora\u017anych. Dzi\u0119ki temu instancja zachowuje zdolno\u015b\u0107 szybkiego reagowania, a <strong>Stosunek<\/strong> porusza si\u0119 tam, gdzie jest jego miejsce.<\/p>","protected":false},"excerpt":{"rendered":"<p>Dowiedz si\u0119, jak prawid\u0142owo interpretowa\u0107 wska\u017anik fragmentacji pami\u0119ci Redis, rozpoznawa\u0107 zakresy normalne i krytyczne oraz jak dzi\u0119ki ukierunkowanemu dostrajaniu Redis zapewni\u0107 wydajno\u015b\u0107 i stabilno\u015b\u0107 pami\u0119ci Redis.<\/p>","protected":false},"author":1,"featured_media":21284,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[781],"tags":[],"class_list":["post-21291","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-datenbanken-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"64","_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":"Redis Fragmentation","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":"21284","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21291","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=21291"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21291\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/21284"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=21291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=21291"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=21291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}