Si existen más de 256 dominios, Nginx experimenta el error "Demasiados archivos abiertos"

Created:

2016-11-16 13:07:45 UTC

Modified:

2017-08-17 15:19:39 UTC

6

Was this article helpful?


Have more questions?

Enviar una solicitud

Si existen más de 256 dominios, Nginx experimenta el error "Demasiados archivos abiertos"

Applicable to:

  • Plesk 12.5 for Linux
  • Plesk 12.0 for Linux
  • Plesk 11.0 for Linux
  • Plesk 11.5 for Linux
  • Plesk 10.3 for Linux/Unix

Síntomas

Cuando el soporte para Nginx está habilitado y existen más de 256 dominios, Nginx devuelve el siguiente error:

2012-11-08T20:13:34+07:00 ERR (3): Apache config (13523804010.47553900) generation failed: nginx: [emerg] open() "/var/www/vhosts/test255.tld/statistics/logs/proxy_access_ssl_log" failed (24: Too many open files)
nginx: configuration file /etc/nginx/nginx.conf test failed

Causa

El host virtual de Nginx abre cuatro archivos de registro para cada uno de los hosts virtuales con hosting físico:

  1. proxy_access_log
  2. proxy_access_ssl_log
  3. webmail_access_log
  4. webmail_access_ssl_log

Como resultado, el servidor Nginx excede el número máximo de archivos abiertos.

Resolución

  1. En la configuración de Nginx, establezca el valor ULIMIT requerido:

    Debian/Ubuntu:

    # echo 'NGINX_ULIMIT="-n 4096"' >> /etc/default/nginx
    

    RHEL/CentOS/openSUSE:

    # echo 'NGINX_ULIMIT="-n 4096"' >> /etc/sysconfig/nginx
    
  2. En la configuración de Nginx, defina 'worker_rlimit_nofile' para aumentar el número máximo de archivos abiertos permitidos por el proceso:

    # grep 16384 /etc/nginx/nginx.conf 
            worker_rlimit_nofile 16384;
    

    NOTA: En el caso de sistemas operativos que utilicen ' systemd ' en vez de SysV y LSB, como por ejemplo CentOS 7, RHEL 7, Debian 7

    Aumente LimitNOFILE de Systemd en la sección ' [Service] '. Para ello, modifique el archivo /usr/lib/systemd/system/nginx.service

    [Service]
    LimitNOFILE=4096
    

    Tenga en cuenta que una vez se realice cualquier cambio en la configuración de unit, es necesario volver a cargar el daemon systemd :

    # systemctl --system daemon-reload
    
  3. Reinicie el servicio Nginx:

    # service nginx restart
    
  4. Vuelva a generar la configuración del servidor web:

    # /usr/local/psa/admin/sbin/httpdmng --reconfigure-all
    

Pasos adicionales que también deben aplicarse en el caso Parallels Plesk Panel 11.0.9

  1. En la configuración de Nginx, establezca el valor ULIMIT requerido:

    Debian/Ubuntu:

    # echo 'ULIMIT="-n 4096"' >> /etc/default/nginx
    

    RHEL/CentOS/openSUSE:

    # echo 'ULIMIT="-n 4096"' >> /etc/sysconfig/nginx
    
  2. En la configuración de Nginx, defina 'worker_rlimit_nofile' para aumentar el número máximo de archivos abiertos permitidos por el proceso:

    # grep 16384 /etc/nginx/nginx.conf 
              worker_rlimit_nofile 16384;
    
  3. Descargue y aplique el parche requerido ejecutando los comandos que aparecen a continuación. El primer comando crea un backup del archivo original al que se aplicará el parche y lo sitúa en el directorio /root:

    # cp /etc/init.d/nginx /root/nginx.backup
    

    Debian/Ubuntu:

    # wget http://kb.sp.parallels.com/Attachments/22839/Attachments/nginx.debian-ubuntu.patch
    # patch /etc/init.d/nginx nginx.debian-ubuntu.patch
    

    RHEL/CentOS:

    # wget http://kb.sp.parallels.com/Attachments/22839/Attachments/nginx.redhat-centos.patch
    # patch /etc/init.d/nginx nginx.redhat-centos.patch
    

    openSUSE:

    # wget http://kb.sp.parallels.com/Attachments/22839/Attachments/nginx.suse.patch
    # patch /etc/init.d/nginx nginx.suse.patch
    
  4. Cambie el límite para los descriptores de archivos abiertos para el usuario root y los usuarios psaadm:

    # egrep "root|psaadm" /etc/security/limits.conf
    root hard nofile 4096
    root soft nofile 4096
    psaadm hard nofile 4096
    psaadm soft nofile 4096
    

Nota: para que los cambios se apliquen correctamente, es necesario volver a acceder al terminal.

  1. Añada la línea ulimit -n 32768 al principio del script /usr/local/psa/admin/sbin/nginx-config :

    #!/usr/bin/env bash
    ulimit -n 32768
    
  2. Reinicie los servicios de Nginx y sw-cp-server:

    # /etc/init.d/sw-cp-server restart
    # /etc/init.d/nginx restart
    
  3. Vuelva a generar la configuración del servidor web:

    # /usr/local/psa/admin/sbin/httpdmng --reconfigure-all
    

Tenga en cuenta que estos parámetros de configuración NO se sobrescribirán durante la instalación de una microactualización.

¿Tiene más preguntas? Enviar una solicitud
Inicie sesión para dejar un comentario.