No Linux, os limites de recursos podem ser definidos em vários locais com base no tipo de requisito.
-
/etc/security/limits.conffile. -
/etc/sysctl.conffile. -
ulimitcommand
/etc/security/limits.conf faz parte de pam_limits e, portanto, os limites definidos nesse arquivo são lidos pelo módulo pam_limits durante as sessões de login . A sessão de login pode ser por ssh ou terminal . E pam_limits não afetará os processos do daemon como mencionado aqui .
/etc/sysctl.conf é uma configuração global de todo o sistema, não podemos definir aqui configurações específicas do usuário. Define a quantidade máxima de recursos que podem ser usados por todos os usuários / processos colocados juntos.
ulimit é usado para definir os limites do shell. E assim, quando um limite é definido com ulimit em um shell, o processo que é gerado a partir do shell também obtém esse valor devido à regra de que o child process herda as propriedades parent processes .
E, para o seu caso, como redis é iniciado como parte de init , nenhuma das opções acima ajudará você diretamente. A maneira correta de fazer isso é que você precisa usar o comando ulimit para definir o novo valor no próprio script de inicialização. Como abaixo no script,
ulimit -n 100000
if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS.
Já existe um bug arquivado na lista de desejos para adicionar o recurso ulimit %código%
.
Verifique também na configuração de start-stop-daemon se houver alguma maneira de fornecer limites a ela.