Quando o Redis não pode definir o máximo de arquivos abertos

Problema

Digamos que você esteja em um sistema Debian ou Ubuntu e acabou de encontrar o problema de que sua instância do Redis precisa de mais descritores de arquivo abertos, mas seu sistema não permite isso.
Então, basicamente, quando você vir este erro em seus registros:

# You requested maxclients of 10000 requiring at least 10032 max file descriptors.
# Redis can't set maximum open files to 10032 because of OS error: Operation not permitted
# Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.

Você então pode pensar: “É bom que eu possa usar ulimit -npara ajustar esse número, mas como posso torná-lo persistente por meio de reinicializações do servidor?”
É aí que começa o problema. Você começa a pesquisar na internet como aumentar os limites máximos de arquivos abertos. Você provavelmente encontrará um monte de dicas que lhe dirão para configurar o seu de /etc/security/limits.confacordo, mas isso não funciona, porque o seu usuário redis nem mesmo usa um shell de login, portanto, nenhum pam.
Você abaixa a cabeça de tristeza e pensa em desistir dos computadores e se tornar um florista.

Mas…

Solução

Na verdade, o script init do Redis verificará se uma ULIMITvariável está definida e chamará ulimit -n $ULIMITantes de iniciar a instância do Redis.
Para definir o ULIMITvar, simplesmente abra /etc/defaults/redis-servere descomente o ULIMIT=65536. Reinicie o Redis e ele definirá o ulimit para o usuário redis corretamente.

Espero que isso ajude alguém

(PS apenas testado no Ubuntu)