Izdanje Memcached 1.6.0 sa omogućenom podrškom za eksternu memoriju

održan značajno oslobađanje sistema za keširanje podataka u memoriji Memcached 1.6.0, koji radi na podacima u formatu ključ/vrijednost i jednostavan je za korištenje. Memcached se obično koristi kao lagano rješenje za ubrzavanje visoko opterećenih lokacija keširanjem pristupa DBMS-u i međupodacima. Kod isporučuje se pod BSD licencom.

Nova verzija stabilizira implementaciju skladišta "extstore", koji je sada izgrađen prema zadanim postavkama (da bi se onemogućio u skripti za konfiguriranje, dostupna je opcija "-disable-extstore"), ali zahtijeva eksplicitnu aktivaciju pri pokretanju (stare instalacije će nastaviti raditi bez promjena nakon ažuriranja). Iako se extstore općenito smatra stabilnim, savjetuje se oprez kada ga implementirate na vrlo velike sisteme.

Extstore vam omogućava da koristite SSD/Flash diskove za proširenje veličine keša. Kao i kod RAM-a, Flash memorija nije trajna i resetuje se nakon ponovnog pokretanja. Opseg novog načina rada je da osigura efikasno keširanje velikih podataka. Kada se koristi "extstore", ključevi i metapodaci se, kao i prije, pohranjuju samo u RAM, ali veliki podaci povezani s ključevima, čija veličina prelazi postavljeni prag, pohranjuju se u eksternu memoriju, a samo pokazivač ostaje u RAM-u.

Ako je ključ povezan s malim podacima, tada Memcached radi kao i obično, čuva podatke u memoriji i ne pristupa vanjskoj memoriji. Ako ima puno slobodne memorije, tada se najpotrebniji podaci mogu dodatno u potpunosti locirati u keš memoriju u RAM-u (na primjer, možete odrediti da se samo objekti veći od 1024 bajta kojima se nije pristupilo 3600 sekundi resetiraju na Flash ).

Implementacija je optimizirana kako bi se osigurale maksimalne performanse i minimalno opterećenje CPU-a, na račun efikasnosti skladištenja (visok nivo fragmentacije). Da bi se produžio vijek trajanja Flash diskova, podaci se u međuspremniku i ispiraju u pohranu uzastopno. Da biste sačuvali stanje predmemorije između ponovnih pokretanja, možete koristiti mogućnost koja se pojavila u izdanju 1.5.18 da dump dump keša u datoteku. Prilikom sljedećeg pokretanja, možete vratiti keš memoriju iz ove datoteke kako biste eliminirali vrhove opterećenja na procesorima sadržaja zbog toga što je keš prazan (keš memorija odmah postaje „topla“).

Druga važna promjena u Memcachedu 1.6 bila je prerada mrežnog komunikacionog koda, koji je prilagođen za automatsku obradu paketnih zahtjeva unutar jednog sistemskog poziva. Ranije, kada je slao više GET komandi u jednom TCP paketu, memcached bi slao rezultate sa zasebnim sistemskim pozivima. U Memcachedu 1.6, odgovori se agregiraju i vraćaju slanjem jednog sistemskog poziva. Kao rezultat, sada postoji u prosjeku 1.5 ključeva po sistemskom pozivu, što u testovima pokazuje smanjenje opterećenja CPU-a do 25% i smanjenje kašnjenja za nekoliko posto.

Redizajn mrežnog podsistema je također omogućio prelazak na dinamičku dodjelu bafera po potrebi, umjesto statičkog dodjeljivanja bafera. Ova optimizacija je smanjila potrošnju memorije dok se čekaju nove komande putem konekcije koju je uspostavio klijent sa 4.5 KB na 400-500 bajtova, a također je omogućila da se riješite mnogih poziva na malloc, realloc i free, što dovodi do nepotrebne fragmentacije memorije na sistemi sa velikim brojem priključaka. Svaka radna nit sada rukuje svojim vlastitim skupom bafera za čitanje i pisanje za aktivne klijentske veze. Za podešavanje veličine ovih bafera
dostupne su opcije “-o resp_obj_mem_limit=N” i “-o read_buf_mem_limt=N”.

Grana 1.6 je također najavila zastarjelost binarni protokol interakciju sa serverom. Održavanje binarnog protokola i ispravke grešaka će se nastaviti, ali nove funkcije i ažuriranja postojećih funkcija neće se prenositi. Tekstualni protokol nastaviće da se razvija bez promena. Binarni protokol je zamijenjen novim protokolom Meta (tekstualna verzija protokola sa kompaktnim meta-naredbama), demonstrirajući optimalnu kombinaciju performansi i pouzdanosti. Novi protokol pokriva sve operacije koje su ranije bile dostupne putem tekstualnih i binarnih protokola.

izvor: opennet.ru

Dodajte komentar