Oui j'ai mis en place les logs des requêtes longues et avec des index manquants mais rien de curieux n'est ressorti.
J'ai finalement créé un script shell qui kill les processus de "nobody" qui squatte 10% de la mémoire.
Technique de nul je sais mais j'ai tellement de développement impactant l'ensemble des visiteurs du site à faire que je chercherai la partie du code qui pose problème plus tard. Surtout que suite à la suppression d'un bloc, le nombre de fois que le script fusible s'active a sacrément diminué. (de 3-4 fois par heures à 2-3 fois par jours)
Je vous fais un petit copié collé du script si ça intéresse certains :
#!/bin/sh #set -xv tab=($(ps -C fusible.sh | awk '{print($1)}')) ok=0 i=0 while [ "$i" -lt "${#tab[*]}" ] do pid=${tab[$i]} if [ "$pid" != "PID" ] then ((ok++)) fi ((i++)) done if [ "$ok" -lt 3 ] then limit="10" log="/var/log/antiplantage.log" echo $(date) " : ALERT relance du fusible !">> $log while [ 1 ] do tab=($(ps v U nobody | awk '{print($1,$9)}')) i=0 while [ "$i" -lt "${#tab[*]}" ] do pid=${tab[$i]} mem=${tab[$i+1]} if [ "$pid" != "PID" ] then COMP=$(echo "$mem>$limit" | bc) if [ $COMP -eq 1 ] then echo $(date) " : " $pid " = " $mem " %">> $log kill -15 $pid sleep 1 kill -9 $pid fi fi ((i=i+2)) done #echo $(date) " OK" >> $log done fi
Petite explication :
Le script est lancé par un cron toutes les minutes car il avait tendance à disparaître au bout d'un moment.
Chose curieuse, lorsque je le lance, il prend 2 PID dont 1 qui change à chaque ps.
Pour vérifier la non présence d'un autre script fusible, je vérifie alors qu'il n'est présent que sur 2 PID.
Si c'est le cas, il continue et inscrit une alerte dans le log.
Ensuite je boucle et double kill tous les processus > 10% de charge mémoire.
Au début, je faisais un sleep 30 pour ne boucler que toutes les 30 secondes mais la vitesse à laquelle le script malicieux charge la mémoire est telle que j'ai dû me résoudre à boucler en continue.
Ce script fusible.sh, prend 7 à 8% d'occupation processeur et rien en mémoire.
Encore merci pour votre aide.
Je me pencherai plus sur le sujet à mes heures perdues et vous tiendrai au courant sur ce que je trouve.
Je reste toutefois ouvert à toute suggestion me permettant de pister les raisons de ralentissements d'un serveur web php/mysql.