Tous les matins, une sauvegarde des sites hébergés sur le serveur est effectuée.
A ce moment là, gzip
tourne à plein régime et utilise pendant un certain temps le CPU – la montée en charge atteint 50%, ce qui devient limite pour la réactivité des sites Et pour cause : gzip
ne fonctionne qu’en mono-core.
Il nous faut donc optimiser tout cela ! Mark Adler, l’auteur de gzip
, a écrit pigz
(qui se prononce pig-zee, à l’américaine) pour compresser fichiers et répertoires en utilisant tous les coeurs du processeur simultanément.
Pigz représente donc un gain de temps mais allège également la charge du processeur, sollicité moins longtemps.
Installation de pigz
Pigz est disponible sur la plupart des distributions linux, on peut donc l’installer avec un simple :
apt install pigz
L’autre avantage, c’est que si on lit le manuel, on se rend compte que les options et paramètres sont les mêmes que ceux de gzip, ce qui en fait un drop-in replacement de choix.
Remplacer gzip par pigz sur le serveur
L’occasion d’optimiser la compression des sauvegardes est trop belle : et si nous remplacions tout simplement gzip
par pigz
, sur l’intégralité du serveur et sans toucher à aucun de nos scripts ?
Allez, c’est parti ! On édite donc le fichier .bashrc
:
nano .bashrc
Code language: CSS (css)
et on y ajoute les deux fonctions suivantes :
###
# Matt Biscay
# https://www.skyminds.net/?p=29838
# Use pigz instead of gzip
###
function gzip(){
pigz $@
}
export -f gzip
function gunzip(){
unpigz $@
}
export -f gunzip
Code language: PHP (php)
Cela nous permet de remplacer les fonctions gzip
et gunzip
par pigz
et unpigz
, respectivement.
Sauvegardez le fichier et rechargez-le pour activer les changements :
source .bashrc
Code language: CSS (css)
Et voilà : pigz
remplace désormais gzip
pour toutes les opérations de compression du serveur. A nous la compression multi-core :)