Fuite mémoire sous Linux ?

Depuis quelques jours, mon serveur s’arrête  sans aucune raison apparente. Dans un unième plantage intervenu ce midi, je pense avoir réussi à comprendre l’origine du problème. Il semblerait que le système soit dans l’incapacité de réallouer la mémoire consommée par les buffers et le cache. Autrement dit, quand la mémoire used+shared+buffers/cache dépasse la mémoire totale, alors les services ne sont plus en mesure de répondre aux requêtes.

[root@enfinauchaud ~]# free
               total        used        free      shared  buff/cache   available
Mem:        32542248     2111840    30071936      173752     1004048    30430408
Swap:        8388604           0     8388604
[root@enfinauchaud ~]#

Le script PHP

Comme je ne parvenais pas à échapper les variables de la commande AWK dans un script Bash, j’ai décidé d’encapsuler l’exécution des commandes du shell dans du PHP. L’exécution de ce script amenant au vidage du cache et au redémarrage des services  LAMP intervient quand le système dispose seulement de 10% de mémoire disponible.

Je vous livre le script que je planife toutes les minutes.

<?php
$output=shell_exec("free|grep -P '^Mem:'|awk -F \" \" '{print $3+$5+$6}'");
$output=explode(PHP_EOL,$output);
if($output[0] > 29288024)
{
    for($i=1;$i<4;$i++)
    {
        system("sync;echo $i > /proc/sys/vm/drop_caches");
    }
    system("systemctl restart mariadb httpd php-fpm");
}
?>

Fuite mémoire  sous Linux ?

LAMP /