Dans certains cas il peut être utile de vider la cache en mémoire RAM de votre serveur Linux, ça peut libérer jusqu’à 70% de mémoire Vive.
Pour forcer le noyau à abandonner la page de cache, inode dentry caches sans redémarrage.
Il s’agit d’une opération non-destructive. Dirty objets ne sont pas freeable, par conséquent, vous devez exécuter la synchronisation vers le disque dur au préalable. Pour cela il faut d’abord être sur que toutes les écritures disques en caches soit écritent, avec la commande SYNC
si vous utilisez Ubuntu dans un terminal tapez :
sudo su
Ecriture de la cache disque, dans un terminal tapez :
sync
Puis on vas purger la pagecache de la mémoire RAM dans un terminal tapez :
echo "1" > /proc/sys/vm/drop_caches
Puis on vas purger dentries libre et les inodes de la mémoire RAM dans un terminal tapez :
echo "2" > /proc/sys/vm/drop_caches
Ou on peut aussi puger les deux en même temps : dans un terminal tapez :
echo "3" > /proc/sys/vm/drop_caches
Enfin remettre drop_caches par default
echo "0" > /proc/sys/vm/drop_caches
Dernier Etape : Redemarrer les services Mysql et apache2 afin qu’il recréer leurs caches.
service apache2 restart service mysql restart
Mise en garde: Toutes ces commandes fonctionnent uniquement en mode root
___________________________________________________________
Voici un script pour Purger la Cache Ram du Serveur
J’ai fait un tutoriel sur le Script :
Avec un éditeur tapez :
#!/bin/bash #!/bin/sh # La première ligne sert à spécifier quel shell tu veux excéuter. ici sh # Notice : pour executer un script il faut # 1) changer ses droits pour devenir executable: chmod 777 NomDuScrip.sh # 2) puis l'executer : ./NomDuScrip.sh ################################################## ### Script de purge du cache de la mémoire RAM ### ################################################## echo "sync : Ecrit la cache disque en cours" sync echo "ok" echo "Vidage du cache de la memoire RAM niveau 3" echo "3" > /proc/sys/vm/drop_caches echo "Pause de 1 seconde" sleep 1 echo "sync : re-ecrit la cache disque en cours (+ par sécurité, pas indispensable)" sync echo "action cache remis par defaut" echo "0" > /proc/sys/vm/drop_caches echo "Vidage du cache terminée." echo "redemarre les services mysql pour recréer la cache c'est conseillé" service mysql restart echo "redemarre les services apache2 pour recréer la cache c'est conseillé" service apache2 --full-restart echo "******* Terminée ********"
Enregistrez-le sous le nom : PurgeRam.sh
Donnez les droits a l’execution du script dans un terminal
chmod 777 PurgeRam.sh
vous pouvez l’exécuter ou l’ajouter aux tâches planifiées.
__________________________________________________
Créer une tâche Planifiée vers 4H50 du matin
- Démarrez Tâche Planifiées > Applications > Outils système > Tâches Planifiées
- Cliquez sur Nouveau
- Cliquez sur Une tâche lancée régulièrement
- Saisissez une Description “Ma sauvegarde”
- Commande : Précisez votre Script ou la ligne de commande : ./Chemin/du/scrip/PurgeRam.sh
- Expert saisissez : Minute 0 – Heure 7 – jour * – Mois * – jour de la semaine * = à 4H50 tous les jours
- Ajouter et Valider
- Voila Gnome-schedule a inséré pour vous la ligne cron
50 4 * * * ./chemin/PurgeRam.sh
Vous pouvez Cliquez sur Lance la tache Sélectionner + “Exécuter” pour tester la tache.
___________________________________________________________________
Ou avec crontab (Planificateur de tâche en ligne de commande )
(sans gnome-schedule), tapez :crontab -e insérez : 50 4 * * * ./chemin/PurgeRam.sh
Explication des instructions crontab sur wikipedia
Pour info ça ne sert absolument à rien car le cache ne sert qu’à une chose, rendre plus rapide les accès disque fréquents aux mêmes endroits. Si tu libères le cache tu forces Linux a aller les chercher sur le disque dur à nouveau ce qui ralentit le système.
Si Linux manque de Ram, il purge de lui même la cache. C’est le principe du cache, il ne sert pas aux programmes et sert à rendre la ram inutilisés autre chose qu’un espace vide inutile. Le purge encore une fois ne sert à rien du tout ! Le cache n’est pas de la ram utilisée, c’est de la ram inutilisée mise à profit pour diminuer les accès disques.
En tout cas ces commandes ont quand même une utilité. Celle de purger le cache pour ne pas fausser les benchmarks. Mais sinon leur intérêt n’est la que pour le débuguage du noyau.
j’ai un petit serveur qui sature souvent lors des sauvegardes Mysql , en utilisant cette commande juste avant de faire la sauvegarde j’ai réduit le temps de sauvegarde par 10 !
idem sur un petit desktop dell qui sature dès que j’ai quelques applications ouvertes, il retrouve immédiatement de la vigueurs.
j’ai cru comprendre que le Noyau 3.5 réglait justement ces problèmes de cache.. a tester.
🙂
Merci pour ce script ;o)
Contrairement à ce que dit ElectronikHeart, vider le cache sert même sur des serveur de 16 Go qui sature au bout d’un moment et sature le swap.
Je te fournis le script pour des personnes ayant une version un peu plus ancienne de Debian
#!/bin/bash
#!/bin/sh # La première ligne sert à spécifier quel shell tu veux excéuter. ici sh
# Notice : pour executer un script il faut
# 1) changer c’est droit pour devenir executable: chmod 777 NomDuScrip.sh
# 2) puis l’executer : ./NomDuScrip.sh
##################################################
### Script de purge du cache de la mémoire RAM ###
##################################################
echo « sync : Ecrit la cache disque en cours »
sync
echo « ok »
echo « Vidage du cache de la memoire RAM niveau 3 »
echo « 3 » > /proc/sys/vm/drop_caches
echo « Pause de 1 seconde »
sleep 1
echo « sync : re-ecrit la cache disque en cours (+ par sécurité, pas indispensable) »
sync
echo « action cache remis par defaut »
echo 0 > /proc/sys/vm/drop_caches
echo « Vidage du cache terminée. »
echo « redemarre les services mysql pour recréer la cache c’est conseillé »
/etc/init.d/mysql restart
echo « redemarre les services apache2 pour recréer la cache c’est conseillé »
/etc/init.d/apache2 restart
echo « ******* Terminée ******** »
Ben justement, sur un serveur, on devrait pas mettre de cache 😉
Du coup, avec les nouvelles versions du noyeau, plus aucun prob ‘
Petite question stupide : où placer le script sur son serveur ? A la racine du Magento ? A la racine du serveur ? Dans un dossier ?
Merci pour ce script en tout cas!
ce script peut être mis n’importe ou.
j’ai un serveur mail qui sature souvent, est ce que je lui fait un tache quotidienne de vidage de cache ?
j’ai crut lire que c’etait pas tres bon ?
Disons qu’un serveur bien paramétré et parfaitement optimisé, n’a pas besoin de purger la cache.
Bonjour, et merci pour ce truc que j’ai placé en /root et dans un crontab. Mon crontab n’accepte pas les commandes du type « service apache2 restart » ! je ne sais pas pourquoi, alors je mets « /etc/init.d/apache2 restart », et là, miracle, ca fonctionne !
Merci encore.
J’ai cela, sur la ligne « 0 »> … et je ne sais pas quoi faire. Je ne peux même pas lancer cette instruction endehors du cron !
action cache remis par defaut
/root/PurgeRam.sh: ligne 22 : echo: erreur d’écriture : Argument invalide
changer c’est droit pour devenir executable > changer ses droits