Memcached 1.6.0-udgivelse med ekstern lagerunderstøttelse aktiveret

tog sted betydelig frigivelse af datacachesystemet i hukommelsen Memcached 1.6.0, som opererer på data i nøgle/værdi-format og er nem at bruge. Memcached bruges normalt som en letvægtsløsning til at fremskynde arbejdet på højbelastede websteder ved at cache adgang til DBMS og mellemliggende data. Kode leveres under BSD-licensen.

Den nye version stabiliserer implementeringen af ​​lageret "extstore", som nu er bygget som standard (for at deaktivere i konfigurationsscriptet er muligheden "-disable-extstore" til rådighed), men kræver eksplicit aktivering ved opstart (gamle installationer vil fortsætte med at fungere uden ændringer efter opdateringen). Selvom extstore generelt anses for at være stabil, tilrådes forsigtighed, når du implementerer det på meget store systemer.

Extstore giver dig mulighed for at bruge SSD/Flash-drev til at udvide cachestørrelsen. Som med RAM er Flash-lageret ikke permanent og nulstilles ved genstart. Omfanget af den nye tilstand er at sikre effektiv caching af store data. Ved brug af "extstore" bliver nøgler og metadata som før kun gemt i RAM, men store data tilknyttet nøgler, hvis størrelse overstiger en fastsat tærskel, lagres i eksternt lager, og kun pointeren forbliver i RAM.

Hvis nøglen er forbundet med små data, så fungerer Memcached som normalt, opbevarer dataene i hukommelsen og får ikke adgang til eksternt lager. Hvis der er meget ledig hukommelse, kan de mest nødvendige data desuden være helt placeret i cachen i RAM (du kan f.eks. angive, at kun objekter større end 1024 bytes, som ikke er blevet tilgået i 3600 sekunder, nulstilles til Flash ).

Implementeringen er optimeret til at sikre maksimal ydeevne og minimal CPU-belastning på bekostning af lagereffektivitet (højt niveau af fragmentering). For at forlænge Flash-drevs levetid bufres data og skylles til lager sekventielt. For at gemme cachetilstanden mellem genstarter, kan du bruge den mulighed, der dukkede op i version 1.5.18 til at dumpe et cache-dump til en fil. Ved næste opstart kan du gendanne cachen fra denne fil for at eliminere peaks i belastningen på indholdsprocessorer på grund af, at cachen er tom (cachen bliver straks "varm").

Den anden vigtige ændring i Memcached 1.6 var omarbejdningen af ​​netværkskommunikationskoden, som er tilpasset til automatisk at behandle batch-anmodninger inden for et enkelt systemopkald. Tidligere, når man sendte flere GET-kommandoer i en enkelt TCP-pakke, ville memcached sende resultaterne med separate systemkald. I Memcached 1.6 aggregeres svar og returneres ved at sende et enkelt systemkald. Som følge heraf er der nu i gennemsnit 1.5 nøgler pr. systemkald, hvilket i test demonstrerer en reduktion i CPU-belastning med op til 25 % og en reduktion i latens med flere procent.

Redesignet af netværksundersystemet gjorde det også muligt at gå over til dynamisk allokering af buffere efter behov, i stedet for statisk at tildele buffere. Denne optimering reducerede hukommelsesforbruget, mens man ventede på nye kommandoer gennem en klient-etableret forbindelse fra 4.5 KB til 400-500 bytes, og gjorde det også muligt at slippe af med mange opkald til malloc, realloc og free, som førte til unødvendig hukommelsesfragmentering på systemer med et stort antal forbindelser. Hver arbejdstråd håndterer nu sin egen pulje af læse- og skrivebuffere til aktive klientforbindelser. For at justere størrelsen af ​​disse buffere
mulighederne "-o resp_obj_mem_limit=N" og "-o read_buf_mem_limt=N" er tilvejebragt.

Afdeling 1.6 meddelte også afskrivning af binær protokol interaktion med serveren. Binær protokolvedligeholdelse og fejlrettelser vil fortsætte, men nye funktioner og opdateringer til eksisterende funktioner vil ikke blive porteret. Tekstprotokol vil fortsætte med at udvikle sig uden ændringer. Den binære protokol er blevet erstattet af en ny protokol meta (en tekstversion af protokollen med kompakte meta-kommandoer), der demonstrerer den optimale kombination af ydeevne og pålidelighed. Den nye protokol dækker alle operationer, der tidligere var tilgængelige via tekst- og binære protokoller.

Kilde: opennet.ru

Tilføj en kommentar