Ajouter un commentaire

Debian 8 Jessie : booster les sessions PHP en utilisant la mémoire RAM avec tmpfs

Si vous avez suivi les articles précédents, votre PHP utilise le répertoire /var/lib/php/sessions pour stocker les variables de session de PHP : $_SESSION
Vous pouvez vérifier dans votre phpinfo() la valeur de la variable session.save_path

session.save_path	/var/lib/php/sessions

Pour éviter de faire des accès aux disques durs à chaque utilisation des variables de sessions, j'ai décidé d'utiliser un RAM Disk (tmpfs).
Pour faire simple, j'alloue une partie de la mémoire RAM de mon serveur à une partition virtuelle qui sera utilisée comme un disque dur "normal".
Attention par contre, lors d'un redémarrage du serveur, le contenu de ce RAM Disk est définitivement perdu.

Mais bon, pour stocker les variables de sessions, ce n'est pas réellement un problème.

 

Afficher les volumes

Avant d'aller plus loin, exécuter la commande df pour afficher les volumes de votre système et l'espace disponible.

df

Le résultat sur mon serveur.

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       10287416 2174260   7673032  23% /
udev               10240       0     10240   0% /dev
tmpfs             401908   45552    356356  12% /run
tmpfs            1004768       0   1004768   0% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
tmpfs            1004768       0   1004768   0% /sys/fs/cgroup

Vous remarquerez qu'il existe déjà plusieurs volumes tmpfs qui ont été créés par votre système.

 

Création du volume tmpfs pour les sessions PHP

C'est finalement assez simple... la commande suivante va permettre de créer un volume de 128 Mo (en RAM) qui accueillera désormais tous les fichiers stockés à /var/lib/php/sessions

sudo mount -t tmpfs -o size=128M tmpfs /var/lib/php/sessions

J'ai alloué 128 Mo à mon volume /var/lib/php/sessions mais tmpfs n'utilise que l'espace nécessaire.
Donc s'il n'y a que 2 Mo sur mon volume, il ne consommera que 2 Mo de mémoire et pas 128 Mo smiley

La commande mount ci-dessus sera perdue après un redémarrage de votre serveur.
Rendez-vous au chapitre ci-dessous si vous souhaitez monter automatiquement votre volume tmpfs à chaque démarrage de votre serveur.

 

Monter automatiquement le volume tmpfs au démarrage du système

Pour que le volume tmpfs soit monté dès le démarrage du système, il faut le définir dans le fichier fstab

sudo nano /etc/fstab

Voici le contenu sur mon serveur VPS avant modification

# /etc/fstab: static file system information.
proc  /proc  proc  nodev,noexec,nosuid  0  0
/dev/vda1  /  ext3  errors=remount-ro  0  1

Et j'ajoute la ligne suivante à la fin du fichier

tmpfs /var/lib/php/sessions tmpfs defaults,size=128M 0 0

Pour lire et appliquer le fichier fstab, 2 possibilités :

  • redémarrer le serveur avec sudo reboot
  • remonter les partitions avec sudo mount -a

Si vous exécuter à nouveau la commande df, vous constaterez que /var/lib/php/sessions est bien en mémoire à présent

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       10287416 2174268   7673024  23% /
udev               10240       0     10240   0% /dev
tmpfs             401908   45552    356356  12% /run
tmpfs            1004768       0   1004768   0% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
tmpfs            1004768       0   1004768   0% /sys/fs/cgroup
tmpfs             131072       0    131072   0% /var/lib/php/sessions

 

Sources : https://doc.ubuntu-fr.org/tmpfs

You must have Javascript enabled to use this form.