Article ID: 119500, created on Oct 28, 2014, last review on Oct 28, 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

Síntomas

  1. La carpeta que contiene las sesiones PHP incluye un número muy elevado de archivos:

    ~# ls -l /var/lib/php/session | wc -l
    1139718
    
  2. Al ejecutar /etc/cron.hourly/plesk-php-cleanuper, el consumo de CPU aumenta hasta el 100%.

  3. Cuando se intenta buscar todos los procesos de sesión PHP en ejecución, se obtiene el siguiente error:

    ~# [ -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
    

Causa

El script plesk-php-cleanuper contiene la cadena ! -execdir fuser {} \, que abre cada uno de los archivos presentes en el directorio /var/lib/php/session y verifica que no están siendo usados por un proceso de trabajo y que pueden eliminarse. De todos modos, el número máximo de archivos que pueden abrirse se define a 1024 de forma predeterminada.

Resolución

  1. Elimine /var/lib/php/session usando este script sin el verificador:

    ~# [ -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. Aumente el límite de archivos que pueden abrirse al valor deseado.

Para obtener el número máximo de archivos que pueden abrirse, ejecute el siguiente comando:

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

Añada ulimit -n 30480 a /etc/cron.hourly/plesk-php-cleanuper:

    ~#cat /etc/cron.hourly/plesk-php-cleanuper
    ~#!/bin/sh
    ~ulimit -n 30480
  1. Vuelva a ejecutar la tarea cron requerida y compruebe que esta se completa correctamente.

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

Email subscription for changes to this article
Save as PDF