...

"Redis" ir "Memcached" mažoms "WordPress" svetainėms: "Redis": prasmė ir nauda lyginant

Palyginu čia redis memcached mažoms "WordPress" svetainėms ir parodyti, kuri spartinimo sistema yra greitesnė ir lengviau naudojama. Taigi galite aiškiai Sprendimasnekeičiant prieglobos ar nepirkstant brangios aparatinės įrangos.

Centriniai taškai

  • NaudaAbu šie būdai sumažina duomenų bazės apkrovą ir sutrumpina įkėlimo laiką.
  • Paprastumas"Memcached" išsiskiria plonu dizainu.
  • Funkcijos"Redis" siūlo patvarumą ir daugiau duomenų tipų.
  • Augimas"Redis" pasižymi dinaminėmis funkcijomis ir mastelio keitimu.
  • IšlaidosAbi efektyviai veikia naudodamos mažai operatyviosios atminties.

Kodėl objektų talpykla svarbi mažoms "WordPress" svetainėms

Mažos "WordPress" svetainės generuoja daug puslapių per vieną skambutį Užklausosnors turinys dažnai kartojamas. Objektų talpykloje dažnai naudojami duomenys saugomi tiesiogiai operatyviojoje atmintyje ir išvengiama lėtos prieigos prie duomenų bazės. Tai pastebimai sutrumpina vieno puslapio užklausos atsakymo laiką, net ir naudojant nebrangius tarifus su mažai RAM. Atlikdamas auditą nuolat matau, kad objektų spartinimas perpus sumažina serverio apkrovą ir akivaizdžiai sutrumpina laiką iki pirmojo baito. Jei pradinius puslapius, meniu, valdiklius ar užklausų rezultatus laikote atmintyje, rezultatai pasiekiami pastebimai greičiau.

Tinklaraščiai, klubo puslapiai ar portfelio puslapiai ypač naudingi, nes juose pateikiama daug vienodo turinio. Spartinančiosios atminties sistema sumažina PHP darbą, tenkantį vienai užklausai, ir apsaugo duomenų bazę. Taip sukuriami buferiai duomenų srauto piko metu, pvz., po socialinių pranešimų ar Naujienos. Be to, greitesni puslapiai sumažina atmetimų skaičių ir sustiprina konversijos signalus. Taigi, jūsų svetainės našumas padidėja nedidinant prieglobos paketo. keisti.

"Redis" ir "memcached": Trumpas ir aiškus

"Memcached" daugiausia dėmesio skiria paprastoms rakto ir vertės prieigoms ir užtikrina labai mažą Vėlavimas. "Redis" apima papildomas duomenų struktūras, pasirinktinai saugo duomenis nuolat ir siūlo replikaciją. Dažnai "Memcached" pakanka tik skaitymo talpykloms, tačiau "Redis" dažniausiai naudoju dinamiškesnėms funkcijoms. Abi sistemos veikia darbinėje atmintyje ir reaguoja milisekundžių intervale. Lemiami veiksniai yra jūsų Reikalavimai funkcijos, augimas ir paleidimas iš naujo po pakartotinio paleidimo.

Toliau pateiktoje lentelėje apibendrinti svarbiausi skirtumai. Mėgstu ją naudoti kaip pagalbinę priemonę priimant sprendimus dėl mažų projektų. Joje nurodytos funkcijos, kurios išlieka aktualios "WordPress" objektų spartinimui. Visada patikrinkite, kokių funkcijų jums reikia šiandien ir kokios funkcijos būtų naudingos rytoj. Taip išvengsite vėlesnių Keististresą.

Aspektas Redis "Memcached"
Duomenų struktūros Eilutės, hash'ai, sąrašai, rinkiniai ir t. t. Tik rakto vertė (eilutės)
Atkaklumas Taip (RDB/AOF), kad būtų galima paleisti iš naujo Ne, tik trumpalaikis
Replikavimas Taip (pvz., Sentinel) Tik naudojant išorinius įrankius
Mastelis Klasteris, dalijimas Horizontalūs mazgai, daugiau išteklių
Baldai Šiek tiek daugiau nustatymų Paruošta labai greitai

Taip pat atkreipkite dėmesį į eksploatacines išlaidas, susijusias su operatyviosios atminties suvartojimu ir priežiūra. Abu kandidatai veikia mažose instancijose ir išlieka ekonomiški. "Redis" reikia papildomos atminties išliekamumui užtikrinti, tačiau ji atsiperka prieinamumu po pakartotinio paleidimo. Memcached daugiausia dėmesio skiria greičiui ir paprastumui, todėl diegimas yra trumpesnis. Nustatykite svetainės sudėtingumą pagal savo Laikas nustatymui ir priežiūrai.

Kada "memcached" yra prasminga

Naudokite "Memcached", jei jūsų svetainėje daugiausia pateikiamas pasikartojantis turinys. Tai labai naudinga klasikiniams tinklaraščiams, žurnalams su pastoviais moduliais arba įmonių svetainėms, kuriose yra nedaug atskirų užklausų. Greitai įdiegsite, mažai konfigūruosite ir gausite greitą Atsakymai. "Memcached" dažnai labai gerai veikia mažuose tarifuose su ribota operatyviąja atmintimi. Praktinę talpyklos sluoksnių apžvalgą galite rasti Spartinančiosios talpyklos lygiaikuri padeda nustatyti prioritetus.

Naudoju "Memcached", jei nereikia duomenų išsaugojimo, o komanda pageidauja trumpų kelių. Jei daugiausia skaitote ir beveik nereikia sesijų, eilių ar skaitiklių, pakanka rakto ir vertės logikos. Taip technologija išlieka taupi, neaukojant greičio. apsieiti be. Mokymosi kreivė išlieka plokščia, o stebėjimas yra paprastas. Daugeliui mažų projektų tai puikiai dera su kasdiene Praktika.

Kada "Redis" yra geresnis pasirinkimas

"Redis" tinka, kai tik jūsų svetainė dažnai skelbia pranešimus, siūlo asmenines sritis arba auga vidutinės trukmės ar ilguoju laikotarpiu. Aš naudoju "Redis", kai man reikia sesijų, spartos apribojimų, eilių ar peržiūrų patvarumo. Įvairūs duomenų tipai taupo taikomosios programos logiką ir pagreitina Funkcijos. Be to, po naujo paleidimo talpykla pradedama naudoti su šiltais duomenimis, o tai ypač naudinga atliekant naktinius atnaujinimus. Jei norite išplėsti funkcijas, "Redis" yra daug geresnis pasirinkimas. Parinktys atviras.

"Redis" taip pat rodo savo privalumus planuojant mastelio keitimą. Jūs paskirstote apkrovą, replikuojate duomenis ir apsaugote operacijas nuo gedimų. Tai reiškia, kad jūsų "WordPress" egzempliorius išlieka patikimai reaguojantis net ir didėjant apimtims. Dėl publikavimo / prenumeratos ir "Lua" skriptų vėliau galima supaprastinti automatizavimą. Todėl mažoms svetainėms, turinčioms ambicijų, ankstyvuoju etapu įsteigiu Redis.

Našumas ir išteklių naudojimas

Abi sistemos veikia efektyviai ir reikalauja nedaug RAM išjungti. "Memcached" naudoja daugiasluoksniškumą, kuris puikiai tinka vienodoms prieigoms. "Redis" spindi atlikdama įvairias operacijas ir išlieka greita. Praktiškai viską lemia duomenų modeliai, įskiepių parinkimas ir TTL. Matuokite, o ne pasikliaukite tik nuojauta palikti.

Po įdiegimo patikrinu tokius rodiklius kaip TTFB, užklausos laikas ir talpyklos pataikymo rodiklis. Tada koreguoju TTL, iš kešo pašalinu administratoriaus maršrutus ir iš anksto pašildau centrinius puslapius. Taip palaikomas stabilus paleidimo etapas ir sutaupoma nereikalingų Patarimai. Taip pat atkreipkite dėmesį į objektų talpyklos fragmentaciją dėl labai trumpų TTL. Dažnai yra nenaudojamų Potencialus.

Duomenų patvarumas ir patikimumas

Naudodama RDB ir AOF, "Redis" siūlo dvi galimybes, kaip užtikrinti, kad duomenys būtų vėl prieinami po pakartotinio paleidimo. Tai apsaugo sesijas, skaitiklius ar eiles nuo praradimo. "Memcached" sąmoningai atsisako išliekamumo ir viską paverčia tik nepastoviais duomenimis. paruoštas. Jei paslauga nepavyksta, atstatote talpyklą, o tai, priklausomai nuo svetainės, gali trumpam sulėtinti darbą. Todėl projektuose, kuriuose yra neskelbtinų duomenų arba prisijungimo sričių, pasikliauju Redis.

Atkreipkite dėmesį į saugyklos sąnaudas ir momentinių nuotraukų intervalus, skirtus išlikimui. Per dažnas įrašymas gali apkrauti IO ir padidinti procesoriaus darbo laiką. Intervalus pasirenku pagal pokyčių dažnį ir apkrovos profilį. Taip palaikomas pakartotinio paleidimo ir rašymo vėlavimas neviršijant Balansas. Šiek tiek pakoregavus dažnai sutaupoma minučių per techninės priežiūros langus.

Mastelis, augimas ir ateities planai

Jei rytoj planuojate padidinti srautą ar funkcijas, verta investuoti į Redis. Klasteris ir dalijimas atveria naujas galimybes nekeičiant architektūros. "Memcached" gali augti horizontaliai, bet išlieka gana paprasta savo funkcionalumu. To pakanka tik skaitymo apkrovoms, bet ne sudėtingesniems naudojimo atvejams. Į tai atsižvelgiu iš pat pradžių, kad vėlesni perkėlimai nekeltų pavojaus Tiesioginis veikimas trukdyti.

Taip pat pagalvokite apie stebėjimo galimybes. Naudokite reikšmingus rodiklius, kad laiku atpažintumėte kliūtis. Informacinės lentelės, kuriose nurodomas pataikymo, iškraustymo ir vėlavimo lygis, padės jums priimti sprendimus. Taip galėsite kontroliuoti panaudojimą anksčiau, nei naudotojai pastebės pastebimą poveikį. Planavimas pranašesnis už reakciją, ypač mažoms komandoms, turinčioms nedaug Laikas.

Įgyvendinimas "WordPress": įskiepiai ir priegloba

"WordPress" dažnai naudoju įskiepius, pvz. Objektas-cache drop-in arba "Redis" įskiepiai. Daugelis prieglobos paslaugų teikėjų teikia iš anksto įdiegtą "Redis" arba "Memcached". Įjungti galima greitai ir lengvai, jei yra PHP plėtiniai. Dėl "Redis" vadovaujuosi šiuo vadovu: "Redis" nustatymas "WordPress" sistemoje. Tada patikrinu, ar galinė dalis teisingai nustatė būseną. praneša ..

W3 Total Cache, LiteSpeed Cache arba WP Rocket gali valdyti objektų talpyklą. Būtinai protingai derinkite puslapio ir objektų talpyklą. Iš statinės spartinančiosios talpyklos išskiriu administratoriaus, cron ir dinaminius galinius taškus. Tuo pat metu objektų talpyklą naudoju valdikliams, meniu ir kryžminėms nuorodoms spartinti. Ši sąveika sumažina užklausų skaičių ir padidina suvokiamą greitis.

Konfigūravimo patarimai ir tipiniai kliuviniai

Nustatykite prasmingus TTL: Pakankamai ilgas, kad būtų gauta rezultatų, ir pakankamai trumpas, kad būtų užtikrintas savalaikiškumas. Aš pradedu nuo minučių iki mažų valandų ir tikslinu pagal Matavimas. Venkite visuotinio plovimo po nedidelių pakeitimų, vietoj to nustatykite tikslingus panaikinimus. Saugokitės didelių objektų, kurie išstumia talpyklą ir sumažina pataikymo rodiklį. Juos galite atpažinti naudodami registravimą Išsiskyrimai greitai.

Naudodamasis "Redis", tikrinu atminties ribas ir iškraustymo strategiją. "allkeys-lru" arba "volatile-lru" gali būti naudingos, priklausomai nuo TTL naudojimo. Naudodamas "Memcached", tikrinu plokštės dydžius, kad objektai švariai tilptų. Taip pat naudoju būklės patikrinimus, kad atpažinčiau gedimus anksčiau, nei juos pastebi naudotojai. Nedideli derinimo žingsniai atsiperka per kelias savaites ir metus. Mėnesiai iš.

Teisingai klasifikuoti objektų talpyklą

Daugelis žmonių painioja objektų talpyklą, puslapių talpyklą ir duomenų bazės talpyklą. Aš juos aiškiai skiriu:

  • Puslapio talpykla: išsaugo visus HTML atsakymus. Didžiausias efektas anoniminiams naudotojams, tačiau sudėtinga asmeninėms sritims.
  • Objektų talpykla: talpina PHP objektus ir užklausų rezultatus. Veikia visiems naudotojams, net ir prisijungusiems, todėl yra Patikimas bazinis sluoksnis.
  • Pereinamieji procesai / galimybės: WordPress saugo laikinas reikšmes. Naudojant nuolatinę objektų talpyklą, laikinosios reikšmės saugomos operatyviojoje atmintyje, o ne duomenų bazėje ir yra Žymiai greičiau.

Ypač "WooCommerce", narystės ar mokymosi platformoms objektų talpykla yra saugumo linija: Net jei puslapio talpykla prisijungusiems asmenims yra išjungta, meniu, užklausų rezultatai ir konfigūracijos išlieka greiti.

Prieglobos realybė ir ryšio tipai

Iš anksto patikrinu aplinką, nes ji turi įtakos pasirinkimui:

  • Bendroji priegloba: "Redis" / "Memcached" dažnai teikiama kaip paslauga. Naudojamas iš anksto nustatytas prievadas arba lizdas. Privalumas: Nėra šaknų būtina.
  • "vServer/Dedicated": visiškas valdymas. Pirmenybę teikiu "Unix" lizdams vietiniams ryšiams (mažesnis vėlavimas, nėra atvirų prievadų).
  • Valdoma debesija: atkreipkite dėmesį į apribojimus (maksimalus prisijungimų skaičius, operatyviosios atminties kvota) ir į tai, ar įjungtas pastovumas.

PHP integracijai naudoju vietinius plėtinius (pvz., "phpredis" arba "memcached"). Nuolatiniai ryšiai sumažina pridėtines išlaidas, o laiko tarpai yra trumpi, kad užstrigimai neturėtų įtakos darbui. Reakcijos laikas jį sugadinti. Svarbu, kad spartinančioji atmintinė būtų vietoje arba tame pačiame AZ ir (arba) duomenų centre, nes priešingu atveju dėl vėlavimo prarandamas pranašumas.

Dydis: kiek RAM reikia talpyklai?

Skaičiuoju pragmatiškai ir mieliau pradedu konservatyviai:

  • Maži tinklaraščiai ir (arba) portfeliai: dažnai pakanka 64-128 MB objektų talpyklai.
  • MVĮ puslapiai / žurnalai: 128-256 MB.
  • Parduotuvės / narių svetainės: 256-512 MB, priklausomai nuo įskiepio kraštovaizdžio ir asmeninių valdiklių.

Nykščio taisyklė: dažnai naudojamų objektų suma × vidutinis objekto dydis + 20-30 % pridėtinių išlaidų. "Redis" turi struktūros pridėtines išlaidas (raktai, hash'ai), "Memcached" - fragmentus su plokštėmis. Jei iškraustymų padaugėja arba pataikymo rodikliai sumažėja, padidinu RAM atmintį maži žingsniai arba sumažinti TTL specialiai retiems objektams.

Pradėkite naudoti pasitvirtinusias konfigūracijas

Pradedu nuo paprastų, skaidrių numatytųjų nustatymų ir tada atlieku pakeitimus:

  • Redis: apibrėžkite maxmemory (pvz., 256-512 MB) ir "allkeys-lru" kaip pradžią. Aktyvinkite pastovumą tik tada, jei saugote sesijas ir (arba) eiles.
  • "Redis" patvarumas: RDB momentinės nuotraukos vidutiniais intervalais, AOF "everysec", kad būtų pasiektas tinkamas kompromisas. Naudojant tik objektų talpyklą, išliekamumas lieka.
  • "Memcached": Užtikrinkite pakankamai atminties, palikite įjungtą plokštės automatizavimą ir stebėkite didelius objektus. Srautų skaičių nustatykite pagal procesoriaus branduolių skaičių.
  • WordPress: Nustatykite standartizuotą priešdėlį / vardų erdvę kiekvienai aplinkai (dev/stage/prod), kad talpyklos netrukdytų viena kitai.
  • TTL: Užklausų rezultatai 5-30 minučių, konfigūracijos 12-24 valandos, API atsakymai priklausomai nuo šviežumo minučių intervale.

Taip išvengiama nereikalingų iškraustymų ir išsaugoma talpykla. nuspėjamas. Po savaitės darbo, remdamasis realiais rodikliais, atlieku pakeitimus.

Saugumas ir prieiga

Spartinančiosios atmintinės paslaugos nėra viešoji sąsaja. Aš jas nuosekliai saugau:

  • Susiekite tik lokaliai (127.0.0.0.1 arba lizdas) ir griežtai laikykitės ugniasienių reikalavimų.
  • "Redis": naudokite slaptažodį/ACL, apribokite jautrias komandas.
  • "Memcached": Jei įmanoma, naudokite SASL.
  • Stebėsena: atminties, jungčių, iškraustymų ir vėlavimo pavojaus signalai. Paprasti patikrinimai užkerta kelią ilgiems Spėlionės.

Ypač naudodamasis kelių serverių ar konteinerių konfigūracijomis, įsitikinu, kad vidiniai tinklai netyčia nėra . yra.

Tipiniai "WordPress" scenarijai ir rekomendacijos

  • Tinklaraštis / žurnalas be prisijungimo: "Memcached" greita pradžia. Puslapių ir objektų talpykla duoda labai gerų rezultatų.
  • MVĮ svetainė su formomis ir šiek tiek dinamiškais moduliais: Dažnai pakanka "Memcached", o "Redis" išlieka galimybė ateityje.
  • "WooCommerce/Shop": pirmenybė teikiama "Redis", nes sesijos, greičio apribojimai ir skaitikliai gali veikti ilgiau. Puslapio talpykla tik katalogo / produktų puslapiams be sąveikos su pirkinių krepšeliu.
  • Narystė / Bendruomenė: "Redis", skirta prisijungimams, asmeniniams prietaisų skydeliams ir bet kokioms eilėms.
  • Daugiafunkcinė svetainė: Redis su prefikso/DB izoliacija arba Memcached su švariu rakto prefiksu, kad tinklai nepersidengtų.

Svarbu: Prisijungę naudotojai visų pirma naudojasi objektų talpykla. Optimizuoju būtent čia, nes puslapio talpykla sąmoningai naudojama dažniau. išjungtas likučiai.

Stažavimas, diegimas ir talpyklos apšilimas

Planuoju talpyklų tvarkymą dar prieš išleidžiant leidinius:

  • Atskira vardų erdvė kiekvienai aplinkai (priešdėlis / DB indeksas), kad būtų galima atskirti etapinę ir gamybinę versijas.
  • Nėra visuotinio diegimo praplovimo. Vietoj to, tiksliniai panaikinimai (pvz., paveikti pranešimų tipai arba meniu).
  • Pagrindinių puslapių apšilimo maršrutai po įdiegimo, kad naudotojai galėtų rasti geriausius Pradinė reakcija žr.
  • Saikingai įkelkite "Cron" pagrįstą išankstinį įkėlimą - neužkraukite talpyklos retai naudojamais puslapiais.

Tai reiškia, kad vėlinimo trukmė išlieka stabili, o duomenų bazė negauna jokių nereikalingų Patarimai.

Klaidų vaizdai ir greiti sprendimai

  • "Nepavyko prisijungti": Patikrinkite kompiuterio prievadą/portą/socketą, įjunkite PHP plėtinį, patikrinkite ugniasienę ir leidimus. Nustatykite trumpą laiko tarpą, kad išvengtumėte užstrigimo.
  • Mažas pataikymo rodiklis: per trumpi TTL, per retai naudojami raktai arba per daug variantų. Normalizuoju raktus (be nereikalingų parametrų) ir padidinu TTL. žingsnis po žingsnio.
  • Dideli išsikraustymai: per maža RAM arba per dideli objektai. Padidinkite atmintį arba sumažinkite / pakeiskite didelius įrašus.
  • Lėti įrašai su "Redis": per daug agresyvus pastovumas. Palengvinkite momentinių nuotraukų/AOF intervalus arba deaktyvuokite išlikimą grynai objektų talpyklai.
  • Įskiepių konfliktai: aktyvi tik viena objektų talpyklos išleidimo funkcija. Nuolat sutvarkau besidubliuojančius arba konkuruojančius įskiepius.
  • "Flush orgies": venkite "flush all" (nuplauti viską) nedideliems pakeitimams. Pirmenybę teikite tikslingam paveiktų sričių panaikinimui.

Naudodamasis šiais patikrinimais daugumą problemų išsprendžiu per kelias minutes, o ne valandas, ir išsaugau svetainę. reaguoja.

Veiklos metrikos ir tikslinės vertės

Nustatau aiškius tikslus ir nuolat matuoju:

  • TTFB: Siekite, kad tipiniams puslapiams, esant didžiausioms apkrovoms, būtų pasiekta mažesnė nei 200-300 ms trukmė.
  • Objektų talpyklos pataikymo rodiklis: >70 % - pradinė vertė, parduotuvėse, kuriose daug personalizavimo, jis gali būti šiek tiek mažesnis.
  • Iškraustymai: kuo arčiau 0 %, analizuoti pikus.
  • Duomenų bazės užklausos ir (arba) užklausos: idealiu atveju po objektų talpyklos sumažėja 30-60 %.
  • Procesoriaus apkrova: suaktyvinus veikimą, progresavimas tolygus, mažiau šuolių esant vienodam duomenų srautui.

Norėdamas pamatyti koreliacijas, žymiu pakeitimus (diegimus, įskiepių atnaujinimus). Tai leidžia man atpažinti, kada TTL arba atmintis buvo subalansuotas turi būti atliktas.

Veiklos vertinimas kasdieniame gyvenime

Palyginu Pirmasis baitas, Pradėti atvaizdavimą ir užbaigti Įkrovimo laikas prieš ir po aktyvavimo. Tada išbandau pirmąjį skambutį ir vėlesnius apsilankymus, kad galėčiau suskirstyti objektų talpyklos poveikį į kategorijas. Šis palyginimas yra gera įžanga: Pirmasis skambutis ir tolesni apsilankymai. Taip pat stebiu serverio apkrovą, PHP laiką ir duomenų bazės užklausas. Kaip atpažinti, ar talpykla yra tinkamoje vietoje griebia.

Nuolatinei stebėsenai naudoju paprastas ataskaitas ir pavojaus signalus. Patenkinimo rodiklio kritimai dažnai rodo, kad TTL yra sugedę. Jei iškraustymų smarkiai padaugėja, atmintis yra perpildyta. Tada šiek tiek padidinu operatyviąją atmintį arba sumažinu objektų dydžius. Net ir nedideli pakeitimai grąžina kreivę į Kursas.

Trumpas balansas mažiems puslapiams

"Memcached" suteikia greitą pradžią, mažai sąrankos ir stiprų Pataikymai dėl pasikartojančio turinio. To dažnai pakanka tinklaraščiams, paprastoms įmonių svetainėms ir informaciniams puslapiams. "Redis" tinkama, kai tik reikia išliekamumo, augimo ar dinaminių funkcijų. Abi sistemos taupo serverio apkrovą, sutrumpina atsako laiką ir pagerina naudotojų patirtį. Sprendimą priimu atsižvelgdamas į duomenų struktūras, pakartotinio paleidimo reikalavimus ir būsimus reikalavimus. Plėtra.

Pradėkite pragmatiškai: išmatuokite esamą padėtį, įjunkite objektų talpyklą, optimizuokite TTL ir stebėkite rodiklius. Jei vėliau išplėsite funkcijas, prireikus pereikite prie "Redis" ir padidinkite patvarumą bei replikaciją. Taip svetainė bus greita ir neperkrausite infrastruktūros. Pakanka mažų žingsnių, kad būtų pasiektas pastebimas poveikis. Jei tai įgyvendinsite nuosekliai, turėsite naudos iš SEOkonversijos ir eksploatacinių sąnaudų vienodai.

Aktualūs straipsniai