Después de mucho buscar, finalmente encontré que systemd tiene un límite estándar de 4096 y, independientemente de lo que establezca en el nivel del sistema, el nivel systemd siempre tendrá prioridad. La solución para esto es cambiar el límite de archivos abiertos de systemd editando /etc/systemd/system.conf y agregando la siguiente configuración
DefaultLimitNOFILE=65536
Parece que hay muchas configuraciones predeterminadas en systemd que anulan las configuraciones del sistema, por lo que deben configurarse en systemd
Entonces, si es útil para las personas, esta es mi configuración final para un servidor Ubuntu 16.04 para ejecutar redis de producción.
Edite /etc/systemd/system.conf (sudo nano /etc/systemd/system.conf) y agregue
DefaultLimitNOFILE=65536
Edite /etc/security/limits.conf (sudo nano /etc/security/limits.conf) y agregue
* soft nofile 64000
* hard nofile 64000
root soft nofile 64000
root hard nofile 64000
Edite /etc/pam.d/common-session (sudo nano /etc/pam.d/common-session) y agregue
session required pam_limits.so
Edite /etc/pam.d/common-session-noninteractive (sudo nano /etc/pam.d/common-session-noninteractive) y agregue
session required pam_limits.so
Edite /etc/rc.local (sudo nano /etc/rc.local) y agregue
sysctl -w net.core.somaxconn=65535
Edite /etc/sysctl.conf (sudo nano /etc/sysctl.conf) y agregue
vm.overcommit_memory = 1
Edite /etc/rc.local (sudo nano /etc/rc.local) y agregue
echo never > /sys/kernel/mm/transparent_hugepage/enabled