Fallos al limpiar las sesiones PHP

Created:

2016-11-16 13:15:26 UTC

Modified:

2017-08-17 08:29:50 UTC

2

Was this article helpful?


Have more questions?

Enviar una solicitud

Fallos al limpiar las sesiones PHP

Applicable 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
  • Plesk Automation

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.
¿Tiene más preguntas? Enviar una solicitud
Inicie sesión para dejar un comentario.