significativo rilascio del sistema di caching dei dati in memoria , che gestisce i dati in formato chiave/valore e si distingue per la sua facilità d'uso. Memcached è comunemente utilizzato come soluzione leggera per migliorare le prestazioni di siti web ad alto traffico mediante il caching dell'accesso ai database e ai dati intermedi. Codice con licenza BSD.
Nella nuova versione è stata stabilizzata l'implementazione dello storage "", che ora viene compilato per impostazione predefinita (per disattivarlo nello script configure è prevista l'opzione "—disable-extstore"), ma richiede un'attivazione esplicita all'avvio (le installazioni precedenti continueranno a funzionare senza modifiche dopo l'aggiornamento). Anche se in generale lo storage "extstore" è considerato stabile, si raccomanda cautela durante la sua implementazione in sistemi di grandi dimensioni.
Extstore consente di utilizzare unità SSD/Flash per aumentare la dimensione della cache. Come nel caso dell'utilizzo della RAM, lo storage su Flash non è permanente e viene cancellato al riavvio. Un campo di applicazione del nuovo regime è il caching efficiente di grandi volumi di dati. Utilizzando "extstore", le chiavi e i metadati, come prima, vengono memorizzati solo in memoria, ma i dati di grandi dimensioni associati alle chiavi, la cui dimensione supera la soglia impostata, vengono memorizzati in storage esterno, con solo un puntatore rimasto in RAM.
Se ai dati di piccole dimensioni è associata una chiave, Memcached funziona normalmente, mantenendo i dati in memoria e non accedendo allo storage esterno. Se c'è sufficiente memoria libera, i dati più richiesti possono rimanere completamente nella cache in memoria (ad esempio, si può specificare di svuotare su Flash solo gli oggetti più grandi di 1024 byte che non sono stati richiesti per 3600 secondi).
L'implementazione è ottimizzata per garantire prestazioni massime e un carico minimo sulla CPU, a scapito dell'efficienza dello storage (alto livello di frammentazione). Per prolungare la vita delle unità Flash, i dati vengono memorizzati in buffer e svuotati nello storage in modo sequenziale. Per mantenere lo stato della cache tra i riavvii, può essere utilizzata la nuova funzionalità introdotta nella versione 1.5.18 che permette di salvare un dump della cache in un file. Al successivo avvio, è possibile ripristinare la cache da questo file per evitare picchi di carico sui gestori di contenuti dovuti a una cache vuota (la cache diventa subito "calda").
Un secondo importante cambiamento in Memcached 1.6 è stata la revisione del codice per l'interazione di rete, che è stata adattata per gestire automaticamente le richieste in batch all'interno di una singola chiamata di sistema. In passato, quando venivano inviate più comandi "GET" in un unico pacchetto TCP, memcached restituiva i risultati con singole chiamate di sistema. In Memcached 1.6, le risposte vengono aggregate e restituite attraverso l'invio di una singola chiamata di sistema. Di conseguenza, ora ci sono in media 1.5 chiavi per chiamata di sistema, il che dimostra nei test una riduzione del carico sulla CPU fino al 25% e un abbassamento dei ritardi di qualche punto percentuale.
La revisione del sottosistema di rete ha anche permesso di passare all'allocazione dinamica dei buffer secondo necessità, invece della suddivisione statica dei buffer. Questa ottimizzazione ha ridotto il consumo di memoria in attesa di nuovi comandi tramite la connessione stabilita dal cliente da 4.5 Kb a 400-500 byte, e ha anche consentito di eliminare molte chiamate a malloc, realloc e free, che portano a un'eccessiva frammentazione della memoria sui sistemi con un gran numero di connessioni. Ogni thread di lavoro ora gestisce il proprio pool di buffer per la lettura e la scrittura per le connessioni client attive. Per configurare la dimensione di questi buffer
sono previste le opzioni "-o resp_obj_mem_limit=N" e "-o read_buf_mem_limt=N".
Nella versione 1.6 è stata inoltre annunciata la retrocessione del di interazione con il server. La manutenzione del protocollo binario e la correzione degli errori continueranno, ma nuove funzionalità e aggiornamenti delle funzioni esistenti non verranno trasferiti. continuerà a svilupparsi senza modifiche. In sostituzione del protocollo binario, è stato introdotto un nuovo protocollo (versione testuale del protocollo con comandi meta compatti), che dimostra un'eccellente combinazione di prestazioni e affidabilità. Il nuovo protocollo copre tutte le operazioni precedentemente disponibili tramite i protocolli testuali e binari.
Fonte: opennet.ru
