Llançament de Memcached 1.6.0 amb suport per a l'emmagatzematge extern habilitat

tingué lloc llançament important del sistema de memòria cau de dades en memòria Memcached 1.6.0, que funciona amb dades en format clau/valor i és fàcil d'utilitzar. Memcached s'utilitza generalment com a solució lleugera per accelerar els llocs d'alta càrrega mitjançant l'accés a la memòria cau al SGBD i dades intermèdies. Codi subministrat sota la llicència BSD.

La nova versió estabilitza la implementació de l'emmagatzematge "extstore", que ara està construït per defecte (per desactivar-lo, l'script de configuració proporciona l'opció "--disable-extstore"), però requereix una activació explícita a l'inici (les instal·lacions antigues continuaran funcionant sense canvis després de l'actualització). Tot i que generalment es considera que l'extstore és estable, es recomana precaució a l'hora d'implementar-lo en sistemes molt grans.

Extstore us permet utilitzar unitats SSD/Flash per ampliar la mida de la memòria cau. Igual que amb la memòria RAM, l'emmagatzematge Flash no és permanent i es restableix quan es reinicia. L'abast del nou mode és garantir l'emmagatzematge en memòria cau de grans dades. Quan s'utilitza "extstore", les claus i les metadades s'emmagatzemen, com abans, només a la memòria RAM, però les dades grans associades a les claus, la mida de les quals supera un llindar establert, s'emmagatzemen a l'emmagatzematge extern i només el punter roman a la memòria RAM.

Si la clau està associada a dades petites, Memcached funciona com de costum, conserva les dades a la memòria i no accedeix a l'emmagatzematge extern. Si hi ha molta memòria lliure, les dades més necessàries també es poden localitzar completament a la memòria cau de la memòria RAM (per exemple, podeu especificar que només els objectes de més de 1024 bytes als quals no s'ha accedit durant 3600 segons es restableixin a Flash). ).

La implementació està optimitzada per garantir el màxim rendiment i una càrrega mínima de la CPU, a costa de l'eficiència de l'emmagatzematge (alt nivell de fragmentació). Per allargar la vida útil de les unitats flaix, les dades s'emmagatzemen i s'envien a l'emmagatzematge seqüencialment. Per desar l'estat de la memòria cau entre reinicis, podeu utilitzar l'habilitat que va aparèixer a la versió 1.5.18 per bolcar un abocament de memòria cau a un fitxer. En el proper inici, podeu restaurar la memòria cau d'aquest fitxer per eliminar els pics de càrrega dels processadors de contingut a causa que la memòria cau està buida (la memòria cau immediatament es torna "calenta").

El segon canvi important a Memcached 1.6 va ser la reelaboració del codi de comunicació de xarxa, que s'adapta per processar automàticament les sol·licituds per lots dins d'una única trucada al sistema. Anteriorment, quan s'enviaven diverses ordres GET en un sol paquet TCP, memcached enviava els resultats amb trucades de sistema separades. A Memcached 1.6, les respostes s'agreguen i es retornen enviant una única trucada al sistema. Com a resultat, ara hi ha una mitjana d'1.5 claus per trucada al sistema, cosa que en les proves demostra una reducció de la càrrega de la CPU fins a un 25% i una reducció de la latència en diversos per cent.

El redisseny del subsistema de xarxa també va permetre passar a l'assignació dinàmica de buffers segons calia, en lloc d'assignar buffers estàticament. Aquesta optimització va reduir el consum de memòria mentre s'esperava noves ordres a través d'una connexió establerta pel client de 4.5 KB a 400-500 bytes, i també va permetre desfer-se de moltes trucades a malloc, realloc i free, que condueixen a una fragmentació innecessària de la memòria en sistemes amb un gran nombre de connexions. Cada fil de treball ara gestiona el seu propi grup de buffers de lectura i escriptura per a connexions de client actives. Per ajustar la mida d'aquests buffers
es proporcionen les opcions "-o resp_obj_mem_limit=N" i "-o read_buf_mem_limt=N".

La branca 1.6 també va anunciar la desactivació de protocol binari interacció amb el servidor. El manteniment del protocol binari i les correccions d'errors continuaran, però les noves característiques i les actualitzacions de les funcions existents no es portaran. Protocol de text continuarà desenvolupant-se sense canvis. El protocol binari ha estat substituït per un nou protocol meta (una versió de text del protocol amb meta-ordres compactes), que demostra la combinació òptima de rendiment i fiabilitat. El nou protocol cobreix totes les operacions anteriorment disponibles mitjançant protocols de text i binaris.

Font: opennet.ru

Afegeix comentari