Como se indica en el título, mi servidor Nginx parece fallar constantemente aunque se desconoce el motivo.
Tengo algunos consejos de mi registro de errores que pueden provocar el problema.
Intenté aumentar el límite de archivos abiertos, lo que tiene cierto efecto, pero fue en vano.
2015/09/29 17:18:01 [crit] 20560#0: accept4() failed (24: Too many open files)
2015/09/29 17:18:01 [crit] 20560#0: accept4() failed (24: Too many open files)
Intenté aumentar el límite, pero también veo esto en mi registro de errores.
2015/09/29 17:18:02 [alert] 20632#0: setrlimit(RLIMIT_NOFILE, 300000000) failed (1: Operation not permitted)
2015/09/29 17:18:02 [alert] 20633#0: setrlimit(RLIMIT_NOFILE, 300000000) failed (1: Operation not permitted)
2015/09/29 17:18:02 [alert] 20560#0: recvmsg() truncated data
¿Cómo doy permiso para aumentar el límite de archivos?
Además, ¿es esta la razón por la que mi servidor falla?
¡Gracias!
Acabo de verificar algunos datos más, he editado mis archivos, pero por alguna razón al verificar el límite estricto dice 4096.
root@nalsec:~# sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.eth0.accept_ra = 0
fs.file-max = 2500000000000000000
root@nalsec:~# ulimit -Hn
4096
Lo que contrasta con mi fs.file-max
Probé esto y dice que no tengo permiso (soy root)
root@nalsec:~# ulimit -Hn 1000000000
-bash: ulimit: open files: cannot modify limit: Operation not permitted
Ya edité este archivo sin éxito nano /etc/security/limits.conf
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4
# End of file
nginx soft nofile 10240000000000000000000
nginx hard nofile 10240000000000000000000
* hard nofile 10240000000000000000000000
* soft nofile 10240000000000000000000000
root hard nofile 10240000000000000000000000
root soft nofile 10240000000000000000000000
www-data soft nofile 1024000000000000000
www-data hard nofile 1024000000000000000
Respuesta1
fs.file-max
es un límite para todo el sistematotalNúmero de descriptores de archivos que se pueden abrir en el sistema. No tiene ningún impacto en el límite por proceso.
Para aumentar el límite de descriptores de archivos para procesos individuales, es más fácil hacerlo a través de limits.conf
:
# cat /etc/security/limits.d/nofile.conf
* soft nofile 10000
* hard nofile 1000000
Esto dará a todos los procesos 10.000 descriptores de archivos de forma predeterminada, con la capacidad de solicitar una actualización a 1.000.000 (a través de setrlimit
) si así lo desean.