Aveces nos podemos encontrar con este error en nginx: Nginx: 24: Too Many Open Files sea cual sea el uso de NGINX, ya sea como proxy, proxy inverso, web server principal ejecutando PHP.
El error es que superamos el limite de archivos abierto ( valla novedad eso ya lo dice el error )
Aveces es culpa del sistema tiene limites, esos limites los podemos ver en /etc/sysctl.conf
Aunque casi nunca es cosa del sistema, no si es nuestro servidor y no le hemos puesto limites, por defecto casi nunca tiene ningún limite al menos que se lo hayamos puesto o algún otro sys admin.
Es problema de nginx casi siempre, la solución muy sencilla, editamos el nginx.conf y añadimos esta linea:
worker_rlimit_nofile 45000;
Reiniciamos y eso es todo, puede que necesitemos aumentar el valor, si tenemos muchas peticiones o estamos sufriendo un DDOS muy potente 45 000 no será suficiente aunque subir mucho el valor tampoco nos ayudará ya que el server puede colapsar, así que ustedes verán que les sirve, solo hay que analizar la situación, ver el tipo de servidor que tenemos etc etc
NOTA: Puede salir error cuando tenemos pocas conexiones asignadas, si es así aumentamos los workers_conections y los workers.
Con 30 mil o 35 mil es más que suficiente para un servidor y una web «normal».