Sortie de Memcached 1.6.0 avec prise en charge du stockage externe activée

A eu lieu version importante du système de mise en cache des données en mémoire Memcaché 1.6.0, qui fonctionne sur des données au format clé/valeur et est facile à utiliser. Memcached est généralement utilisé comme solution légère pour accélérer les sites à forte charge en mettant en cache l'accès au SGBD et aux données intermédiaires. Code fourni sous licence BSD.

La nouvelle version stabilise la mise en œuvre du stockage"magasin externe", qui est désormais construit par défaut (pour désactiver dans le script de configuration, l'option "-disable-extstore" est fournie), mais nécessite une activation explicite au démarrage (les anciennes installations continueront à fonctionner sans modifications après la mise à jour). Bien qu'extstore soit généralement considéré comme stable, la prudence est de mise lors de sa mise en œuvre sur de très grands systèmes.

Extstore vous permet d'utiliser des lecteurs SSD/Flash pour augmenter la taille du cache. Comme pour la RAM, le stockage Flash n'est pas permanent et est réinitialisé au redémarrage. L'objectif du nouveau mode est d'assurer une mise en cache efficace des données volumineuses. Lors de l'utilisation de "extstore", les clés et les métadonnées sont, comme auparavant, stockées uniquement dans la RAM, mais les données volumineuses associées aux clés, dont la taille dépasse un seuil défini, sont stockées dans un stockage externe, et seul le pointeur reste dans la RAM.

Si la clé est associée à de petites données, alors Memcached fonctionne comme d'habitude, conserve les données en mémoire et n'accède pas au stockage externe. S'il y a beaucoup de mémoire libre, les données les plus nécessaires peuvent en outre être entièrement localisées dans le cache de la RAM (par exemple, vous pouvez spécifier que seuls les objets de plus de 1024 octets qui n'ont pas été accédés pendant 3600 secondes sont réinitialisés en Flash ).

La mise en œuvre est optimisée pour garantir des performances maximales et une charge CPU minimale, au détriment de l'efficacité du stockage (niveau élevé de fragmentation). Pour prolonger la durée de vie des lecteurs Flash, les données sont mises en mémoire tampon et stockées de manière séquentielle. Pour enregistrer l'état du cache entre les redémarrages, vous pouvez utiliser la possibilité apparue dans la version 1.5.18 de vider un vidage du cache dans un fichier. Au prochain démarrage, vous pourrez restaurer le cache à partir de ce fichier pour éliminer les pics de charge sur les processeurs de contenu dus au cache vide (le cache devient immédiatement « chaud »).

Le deuxième changement important dans Memcached 1.6 a été la refonte du code de communication réseau, qui est adapté pour traiter automatiquement les requêtes par lots au sein d'un seul appel système. Auparavant, lors de l'envoi de plusieurs commandes GET dans un seul paquet TCP, memcached envoyait les résultats avec des appels système distincts. Dans Memcached 1.6, les réponses sont regroupées et renvoyées en envoyant un seul appel système. En conséquence, il y a désormais en moyenne 1.5 clé par appel système, ce qui, lors des tests, démontre une réduction de la charge CPU jusqu'à 25 % et une réduction de la latence de plusieurs pour cent.

La refonte du sous-système réseau a également permis de passer à une allocation dynamique des tampons selon les besoins, au lieu d'une attribution statique des tampons. Cette optimisation a réduit la consommation de mémoire en attendant de nouvelles commandes via une connexion établie par le client de 4.5 Ko à 400-500 octets, et a également permis de se débarrasser de nombreux appels à malloc, realloc et free, qui conduisaient à une fragmentation inutile de la mémoire sur systèmes avec un grand nombre de connexions. Chaque thread de travail gère désormais son propre pool de tampons de lecture et d'écriture pour les connexions client actives. Pour ajuster la taille de ces tampons
les options « -o resp_obj_mem_limit=N » et « -o read_buf_mem_limt=N » sont fournies.

La branche 1.6 a également annoncé la dépréciation de protocole binaire interaction avec le serveur. La maintenance du protocole binaire et les corrections de bugs se poursuivront, mais les nouvelles fonctionnalités et les mises à jour des fonctionnalités existantes ne seront pas portées. Protocole de texte continuera à se développer sans changements. Le protocole binaire a été remplacé par un nouveau protocole objectif (une version texte du protocole avec des méta-commandes compactes), démontrant la combinaison optimale de performances et de fiabilité. Le nouveau protocole couvre toutes les opérations précédemment disponibles via les protocoles texte et binaires.

Source: opennet.ru

Ajouter un commentaire