S'abonner au Flux RSS

vendredi, octobre 23 2009

Intégrer memcached et mysql

Je vais décrire ici une technique pour mettre en cache mémoire, à l'aide de memcached les données d'une base mysql sans modifier le code applicatif. La technique consiste à utiliser mysql-proxy et la librairie lua mysql-proxy-cache. Cette description se base sur une Debian Lenny.

On débute par l'installation de memcached

aptitude install memcached

Ensuite nous allons installer les paquets nécessaire pour satisfaire les dépendances de la librairie.

aptitude install lua5.1 liblua5.1-md5-0 liblua5.1-socket2 luarocks

La librairie luamemcached n'est pas actuellement dans les repository officiel mais il existe néanmoins un paquet debian.

wget http://luaforge.net/frs/download.php/4041/liblua5.1-memcached0.deb
dpkg -i liblua5.1-memcached0.deb

Pour la librairie mysql-proxy-cache qui nous intéresse ici nous pouvons la récupérer par git ou directement à l'adresse http://github.com/clofresh/mysql-proxy-cache/raw/master/mysql-proxy-cache.lua.

A partir de ce point nous considérons que le fichier lua a été sauvegardé dans /usr/share/mysql-proxy/mysql-proxy-cache.lua

Modifions maintenant le fichier de configuration de mysql-proxy pour que celui-ci se lance au démarrage et qu'il intègre la nouvelle librairie, la configuration se fait dans /etc/default/mysql-proxy.

ENABLED="true"
OPTIONS="--proxy-lua-script=/usr/share/mysql-proxy/mysql-proxy-cache.lua"

Il reste à démarrer mysql-proxy avec le script d'init standard

/etc/init.d/mysql-proxy start

C'est désormais opérationnel, par défaut les résultats seront cachés pour une durée de 30 secondes. Le cache n'est pas dynamique dans le sens ou une donnée écrite ne sera pas rendue immédiatement, mais seulement au bout de 30 secondes, prenez garde donc si vous augmentez cette valeur.

Pour vérifier que memcached est bien actif, vous pouvez vous connecter en telnet sur son port d'écoute (11211) et taper la commande stats, vous obtiendrez quelque chose comme :

stats
STAT pid 2539
STAT uptime 21318
STAT time 1256336412
STAT version 1.2.2
STAT pointer_size 32
STAT rusage_user 0.040002
STAT rusage_system 0.120007
STAT curr_items 3
STAT total_items 15
STAT bytes 50447
STAT curr_connections 2
STAT total_connections 651
STAT connection_structures 17
STAT cmd_get 1450
STAT cmd_set 15
STAT get_hits 1435
STAT get_misses 15
STAT evictions 0
STAT bytes_read 151263
STAT bytes_written 45156032
STAT limit_maxbytes 67108864
STAT threads 1

Happy hacking !

mardi, octobre 20 2009

Backport lenny de prefix pour PostgreSQL

Le backport du jour, la librairie prefix de Dimitri Fontaine permet un accés plus rapide aux données utilisant la notion de préfixe, typiquement dans la téléphonie ou le préfixe du numéro composé est primordial pour la tarification.

Accès direct au binaire pour i386.

dimanche, octobre 4 2009

Nouvelle architecture pour les backports

Suite aux derniers backports réalisés pour les paquets PL/R et pgbouncer, j'ai désormais à ma disposition une machine avec un processeur amd64 qui me permet de faire des backports en plus de l'architecture i386. J'ai donc sommairement réorganisé le répertoire des paquets.

samedi, octobre 3 2009

Backport lenny de pgbouncer

Nouveau backport d'un outil lié à PostgreSQL, pgbouncer est un gestionnaire de pool de connexion fortement utile sur les systèmes à nombreuses connexions répétitives.

Seule dépendance de pgbouncer, la libevent en version 1.4 qui n'est pas pas non plus packagée dans Lenny, j'en ai donc réalisé également un backport disponible toujours au même endroit. Pour ceux qui ne connaissent pas pgbouncer et souhaiteraient appronfondir le sujet je leur conseille la lecture du hors-série 44 de GNU/Linux magazine dédiée à PostgreSQL.

Première étape, installons la libevent

wget http://rodolphe.quiedeville.org/backports/lenny/i386/libevent-1.4-2_1.4.12-stable-1_i386.deb
dpkg -i libevent-1.4-2_1.4.12-stable-1_i386.deb

Outre libevent pgbouncer à d'autres dépendances qu'il vaut mieux s'assurer d'avoir sur sa machine avant d'installer le paquet.

aptitude install postgresql-common lsb-base libgcc1 libc6

Ceci étant fait il ne nous reste plus qu'à installer le paquet pgbouncer

wget http://rodolphe.quiedeville.org/backports/lenny/i386/pgbouncer_1.3.1-1_i386.deb
dpkg -i pgbouncer_1.3.1-1_i386.deb

Voilà pgbouncer d'installé sur votre distribution stable favorite, il est à noter que par défaut pgbouncer n'est pas lancé, il faut au préalable modifier le fichier /etc/default/pgbouncer comme indiqué par le warning lors de l'installation du paquet.