o lansare semnificativă a sistemului de caching în memorie , care gestionează datele în format cheie/valoare și se distinge prin ușurința de utilizare. Memcached este folosit de obicei ca o soluție ușoară pentru accelerarea funcționării site-urilor cu un trafic ridicat prin cache-ul accesului la DBMS și la datele intermediare. Cod sub licența BSD.
Noua versiune stabilizează implementarea stocării "" care acum este compilată implicit (pentru dezactivare în scriptul configure există opțiunea "—disable-extstore"), dar necesită activare explicită la pornire (instalările vechi vor continua să funcționeze fără modificări după actualizare). Deși în general stocarea "extstore" este considerată stabilă, se recomandă precauție când este implementată în sisteme foarte mari.
Extstore permite utilizarea SSD-urilor/Flash pentru a extinde dimensiunea cache-ului. La fel ca în cazul utilizării memoriei RAM, stocarea pe Flash nu este permanentă și se resetează la repornire. Un domeniu de aplicare al noului mod este asigurarea caching-ului eficient pentru date de dimensiuni mari. Când se utilizează "extstore", cheile și metadatele, la fel ca înainte, sunt stocate doar în memoria RAM, dar datele mari asociate cheilor, care depășesc un prag stabilit, sunt salvate în stocarea externă, iar în RAM rămâne doar un pointer.
Dacă datele de dimensiuni mici sunt asociate cu cheia, Memcached funcționează ca de obicei, păstrând datele în memorie și neaccesând stocarea externă. Dacă există suficientă memorie liberă, cele mai căutate date pot fi totale în cache în memorie (de exemplu, se poate specifica ca pe Flash să fie salvate doar obiectele mai mari de 1024 de octeți care nu au fost accesate timp de 3600 de secunde).
Implementarea este optimizată pentru a asigura o performanță maximă și o sarcină minimă pe CPU, în detrimentul eficienței stocării (nivel mare de fragmentare). Pentru a prelungi durata de viață a SSD-urilor, datele sunt bufferizate și rescrise în stocare secvențial. Pentru a păstra starea cache-ului între reporniri, se poate folosi opțiunea apărută în versiunea 1.5.18 de a reseta un dump al cache-ului într-un fișier. La următoarea pornire, cache-ul poate fi restaurat din acest fișier pentru a evita vârfurile de sarcină pe procesatorii de conținut din cauza necompletării cache-ului (cache-ul devine imediat "cald").
O a doua schimbare importantă în Memcached 1.6 a fost refacerea codului pentru interacțiunea de rețea, care este adaptată pentru a gestiona automat solicitările de grup în cadrul unei singure apeluri de sistem. Anterior, când se transmiteau mai multe comenzi „GET” într-un singur pachet TCP, memcached returna rezultatele prin executarea unor apeluri de sistem separate. În Memcached 1.6, răspunsurile sunt agregate și returnate prin trimiterea unui singur apel de sistem. Ca rezultat, acum avem, în medie, 1.5 chei pe apel de sistem, ceea ce demonstrează o reducere a încărcării CPU cu până la 25% și o diminuare a întârzierilor cu câteva procente.
Refacerea subsistemului rețelei a permis, de asemenea, trecerea la alocarea dinamică a bufferelor după necesitate, în loc de alocarea statică a acestora. Această optimizare a redus consumul de memorie în așteptarea unor comenzi noi printr-o conexiune stabilită de client de la 4.5 Kb la 400-500 de biți, precum și a înlăturat multe apeluri malloc, realloc și free, care conduceau la o fragmentare suplimentară a memoriei pe sistemele cu un număr mare de conexiuni. Fiecare thread de lucru procesează acum propriul său pool de buffere pentru citire și scriere pentru conexiunile client active. Pentru a configura dimensiunea acestor buffere
sunt prevăzute opțiunile „-o resp_obj_mem_limit=N” și „-o read_buf_mem_limit=N”.
În rama 1.6, de asemenea, s-a anunțat trecerea în categoria învechită de interacțiune cu serverul. Întreținerea protocolului binar și corectarea erorilor vor continua, dar noile funcționalități și actualizările funcțiilor existente nu vor fi transferate. va continua să se dezvolte fără modificări. În locul protocolului binar a venit un nou protocol (varianta text a protocolului cu comenzi meta compacte), care demonstrează un echilibru optim între performanță și fiabilitate. Noul protocol acoperă toate operațiunile, anterior disponibile prin intermediul protocolului text și binar.
Sursa: opennet.ro
