df -h montrait 22 Go libres, mais df -i : 0 inode libre. Chaque session PHP est un fichier ; le pool
extranet les écrit dans /srv/extranet/sessions (valeur posée par php_admin_value). Sur Ubuntu,
session.gc_probability = 0 : PHP ne fait jamais le ménage lui-même, il compte sur phpsessionclean,
qui ne connaît que /var/lib/php/sessions. Résultat : 2,6 millions de fichiers depuis mars.
Le disque n'est pas plein (pas besoin d'agrandir), FPM était sain (« idle: 9 »), et la page statique fonctionnait en HTTPS : ce n'est pas le certificat.
Incident résolu
Analyse et correction
Correction immédiate : supprimer seulement les sessions expirées, sans toucher aux sessions actives :
find /srv/extranet/sessions -type f -name 'sess_*' -mmin +1440 -delete, puis vérifier df -i et la connexion.
Prévention :
- un timer systemd (ou une tâche cron) dédié qui purge
/srv/extranet/sessionstoutes les 30 minutes, ou ajouter ce chemin au nettoyage ; ou bien stocker les sessions dans Redis ; - superviser les inodes (
df -i) et pas seulement l'espace disque : alerte à 80 % ; - documenter que toute valeur
session.save_pathpersonnalisée doit avoir son nettoyage.