Mettre le cache du module PageSpeed en RAM avec tmpfs
Il y a quelques mois je vous avais parlé du module PageSpeed sous Nginx qui permet d’accélérer son site web à travers plusieurs filtres, qui agissent sur le HTML, les images, le CSS ou encore le Javascript.
Lorsque ces ressources sont analysées et réécrites par PageSpeed, elles sont mises en cache dans un dossier qui se trouve dans /var/ngx_pagespeed_cache
.
À chaque requête HTTP, PageSpeed va aller regarder dans le cache pour voir si la ressource demandée a déjà été réécrite. Pour réduire le temps de réponse, il faudrait donc que le cache soit accessible le plus rapidement possible : c’est ce qu’on va faire en le mettant en RAM.
Monter le dossier de cache dans tmpfs
On crée un point de montage tmpfs
et on monte le dossier dedans :
sudo mount -t tmpfs -o size=256M tmpfs /var/ngx_pagespeed_cache
L’option size définit la taille que vous voulez allouer en MB. Pour ma part le cache tourne autour des 90-120 MB donc j’ai mis un peu plus.
Pour observer quelle taille fait le cache on peut utiliser la commande df
:
Et si vous utilisez des graphiques comme Munin, vous pouvez voir que la taille du cache augmente au fil du temps. (Il atteint généralement un seuil qu’il ne dépasse pas, pour ma part vers les 100MB de RAM)
Montage automatique au reboot
Le cache est bien monté en RAM cependant le point de montage ne sera pas récréé au redémarrage. Pour cela, on va utiliser le fichier fstab
qui s’occupe des partitions au démarrage.
Il faut ajouter cette ligne dans le fichier /etc/fstab :
tmpfs /var/ngx_pagespeed_cache tmpfs defaults,size=256M 0 0
Si vous redémarrez, le dossier sera automatiquement monté en tmpfs
.
Notez que cette procédure n’est pas unique à PageSpeed. Si vous utilisez des logiciels qui ont des fichiers de cache vous pouvez aussi les mettre en mémoire vive. 🙂
Dernière modification le 27 octobre 2016.
Bonjour,
Merci pour cet article !
Je me demandais pourquoi le choix de tmpfs plutôt que le couplage natif avec memcached ? Il y a une raison particulière derrière ou pour proposer une solution générique pour monter les systèmes de caches fichier en RAM simplement ?
Pour rebondir sur le sujet d’optimisation des accès fichiers en général on peut je pense aussi parler de ZFS (filesystem introduit par Sun sur Solaris et porté sur d’autres OS ensuite), certes bien moins accessible de prime abord mais qui propose une gestion du cache multi-niveau (avec un premier niveau en RAM) très intéressante.
Tu as vu où que PageSpeed utilise memcached ? (surtout que c’est pas une dépendance)
C’est la doc officielle qui conseille tmpfs ^^
Vieux motard que jamais 😉
Vu ici :
https://developers.google.com/speed/pagespeed/module/system#memcached
Cela dit en tentant de retrouver cette référence je suis tombé sur ces quelques lignes un peu plus haut dans le même document :
» A file-system based cache is always employed on each server. memcached may be used as a scalable network-accessible cache in addiiton to the file cache. The file cache is always required since files larger than 1Mb cannot be stored on memcached, and it is important to optimize large images. »
Du coup ça fait bien sens de garder du tmpfs au moins on a pas de limitation de taille de cache à 1Mb.
Ah ben voilà, merci de l’info quand même 🙂
Dis moi utilises tu aussi le mod brotli ?
Oui 🙂 Je compte faire un article bientôt
Et pas seulement le mod statique ? tu utilises les libbrotli non ?
J’ai l’impression que google insight ne le gere pas….https://developers.google.com/speed/pagespeed/insights/?hl=fr&url=https%3A%2F%2Fangristan.fr%2F
Ou tu penses que ca peut etre un probleme plus global pour les utilisateurs de chrome ?
Oui tout à fait
Euh c’est très bizarre en fait, je vois pas trop le rapport avec Brotli vu que si le client le gère pas il utilise le gzip habituel 😐
« Ou tu penses que ca peut être un problème plus global pour les utilisateurs de chrome ? »
Que veux tu dire par là ?
Ca vient de brotli. J’avais le meme probleme chez moi. J’ai desactive le mod brotli et le probleme a disparu.
Je me demande si ca peut ne pas affecter les utilisateurs de chrome (en fonction de la version) naviguant sur les sites utilisant brotli. Ca bug bien sur google insight….
Ces commentaires sont géniaux !
PS: je suis abonné aux réponses.
Coucou le hors-sujet :’)
Dis moi si tu reçois bien les mails !