Article ID: 119500, created on Nov 4, 2014, last review on Nov 6, 2014

  • Applies to:
  • Plesk 12.5 for Linux
  • Plesk 12.0 for Linux
  • Plesk 11.0 for Linux
  • Plesk 11.5 for Linux
  • Plesk 10.4 for Linux/Unix

Symptômes

  1. Le dossier contenant les sessions PHP comporte de nombreux fichiers :

    ~# ls -l /var/lib/php/session | wc -l
    1139718
    
  2. Lorsque /etc/cron.hourly/plesk-php-cleanuper est exécuté, la consommation du CPU atteint 100 %.

  3. Quand vous essayez de trouver tous les processus de session PHP en cours, cela échoue avec l'erreur suivante :

    ~# [ -x /usr/lib64/plesk-9.0/maxlifetime ] && [ -d /var/lib/php/session ] && find /var/lib/php/session -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib64/plesk-9.0/maxlifetime) ! -execdir fuser {} \; -delete
        Cannot open a network socket.
        Cannot open /proc directory: Too many open files
        fuser: error while loading shared libraries: libc.so.6: cannot open shared object file: Error 24
        find: Failed to save working directory in order to run a command on `sess_fch2h2dm7s73t0g09r3dmepdp0': Too many open files
    

Cause

Le script plesk-php-cleanuper contient la chaîne ! -execdir fuser {} \ qui ouvre tous les fichiers du répertoire /var/lib/php/session. Le script vérifie si ces fichiers ne sont pas utilisés par un processus en cours et peuvent être supprimés. Toutefois, le nombre maximum de fichiers ouverts est défini par défaut sur 1024.

Résolution

  1. Effacez /var/lib/php/session à l'aide du script sans le vérificateur :

    ~# [ -x /usr/lib64/plesk-9.0/maxlifetime ] && [ -d /var/lib/php/session ] && find /var/lib/php/session -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib64/plesk-9.0/maxlifetime) -delete
    
  2. Augmentez la limite du nombre de fichiers ouverts jusqu'à la valeur requise.

Pour ouvrir le nombre maximum de fichiers, exécutez la commande :

    ~# ulimit -a
    open files                      (-n) 1024

Ajoutez ulimit -n 30480 à /etc/cron.hourly/plesk-php-cleanuper :

    ~#cat /etc/cron.hourly/plesk-php-cleanuper
    ~#!/bin/sh
    ~ulimit -n 30480
  1. Ré-exécutez la tâche Cron Job requise et vérifiez que tout s'est déroulé avec succès.

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 01bc4c8cf5b7f01f815a7ada004154a2 29d1e90fd304f01e6420fbe60f66f838 0a53c5a9ca65a74d37ef5c5eaeb55d7f e0aff7830fa22f92062ee4db78133079 e8756e9388aeca36710ac39e739b2b37 dd0611b6086474193d9bf78e2b293040 caea8340e2d186a540518d08602aa065 aea4cd7bfd353ad7a1341a257ad4724a 2a5151f57629129e26ff206d171fbb5f e335d9adf7edffca6a8af8039031a4c7 742559b1631652fadd74764ae8be475e

Email subscription for changes to this article
Save as PDF