Veo este error en la parte superior de mi archivo redis.log:
Los archivos abiertos máximos actuales son 1024. maxclients se ha reducido a 4064 para compensar el ulimit bajo.
He seguido estos pasos al pie de la letra (y reiniciado):
Además, veo esto cuando ejecuto ulimit
:
ubuntu@ip-XX-XXX-XXX-XXX:~$ ulimit -n
65535
¿Es este error engañoso? Si no es así, ¿qué otros pasos debo realizar? Estoy ejecutando redis 2.8.13 (punta del árbol) en Ubuntu LTS 14.04.1 (nuevamente, punta del árbol).
Aquí está la información del usuario:
ubuntu@ip-XX-XXX-XXX-XXX:~$ ps aux | grep redis
root 1027 0.0 0.0 66328 2112 ? Ss 20:30 0:00 sudo -u ubuntu /usr/local/bin/redis-server /etc/redis/redis.conf
ubuntu 1107 19.2 48.8 7629152 7531552 ? Sl 20:30 2:21 /usr/local/bin/redis-server *:6379
Por lo tanto, el servidor se ejecuta como ubuntu.
Aquí está mi archivo limit.conf sin comentarios:
ubuntu@ip-XX-XXX-XXX-XXX:~$ cat /etc/security/limits.conf | sed '/^#/d;/^$/d'
ubuntu soft nofile 65535
ubuntu hard nofile 65535
root soft nofile 65535
root hard nofile 65535
Y aquí está la salida de sysctl fs.file-max:
ubuntu@ip-XX-XXX-XXX-XXX:~$ sysctl -a| grep fs.file-max
sysctl: permission denied on key 'fs.protected_hardlinks'
sysctl: permission denied on key 'fs.protected_symlinks'
fs.file-max = 1528687
sysctl: permission denied on key 'kernel.cad_pid'
sysctl: permission denied on key 'kernel.usermodehelper.bset'
sysctl: permission denied on key 'kernel.usermodehelper.inheritable'
sysctl: permission denied on key 'net.ipv4.tcp_fastopen_key'
como sudo
ubuntu@ip-10-102-154-226:~$ sudo sysctl -a| grep fs.file-max
fs.file-max = 1528687
Además, veo este error en la parte superior del archivo redis.log, no estoy seguro de si está relacionado. Tiene sentido que el usuario de ubuntu no pueda cambiar los archivos abiertos máximos, pero dados los altos límites que he intentado configurar, no debería necesitar:
[1050] 23 Aug 21:00:43.572 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
[1050] 23 Aug 21:00:43.572 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.
Otra sugerencia para los usuarios que encuentran esta publicación cuyo problema no está relacionado con pam_limits.so. En mi caso, Redis se estaba lanzando a través de un supervisor. En este caso, el método por el cual el supervisor cambió los contextos de usuario hizo que la nueva sesión se ejecutara con los límites predeterminados del sistema, no los que había configurado para el usuario.
La solución en ese caso se encontró aquí . En resumen, debe definir el límite a través de ulimit -n como parte del comando de inicio en la supervisión.
Ejemplo:
fuente
Además de aumentar el límite de archivos abiertos. Necesita aumentar maxclients en su redis.conf. Solo es 10000 por defecto.
fuente
Nota para otros usuarios de Ubuntu con un problema similar:
Si está iniciando Redis en el arranque, f.ex a través de Upstart, puede establecer este límite con la estrofa "limit".
Entonces para nofile:
limit nofile 4096 4096
fuente