Diferença entre /etc/security/limits.conf e / proc / $ PID / limits

0

Minha configuração em /etc/security/limits.conf é

* soft nofile 60000
* hard nofile 60000

Eu rodei o nginx no ubuntu.after reinicie o ubuntu, ulimit -n é 60000, mas

cat /proc/'ps -elf | grep nginx | grep 'master process' | awk '{print $4}''/limits| grep 'open files'

a resposta é 1024, por que não 60000?

    
por shenjinrui 06.03.2018 / 03:56

1 resposta

3

/etc/security/limits.conf é lido pelo módulo PAM pam_limits.so no login.

Mas quando o nginx é iniciado na inicialização, ele nunca passa por um procedimento de login, portanto, o PAM nunca tem a chance de fazer alterações ulimit no processo nginx ou em qualquer um de seus processos pai.

Se o seu nginx for iniciado por um script, você deverá adicionar os comandos ulimit ao script:

ulimit -H -n 60000
ulimit -S -n 60000

Se nginx for iniciado por um arquivo systemd .service, use systemctl edit nginx.service e adicione essa linha à seção [Service] do arquivo:

LimitNOFILE=60000:60000

systemctl edit some.service pegará automaticamente o arquivo de serviço original de [/usr]/lib/systemd tree e colocará a versão modificada em /etc/systemd . Todos os arquivos em /etc/systemd substituirão todos os arquivos com o mesmo nome localizado em [/usr]/lib/systemd tree.

Isso também fará com que a configuração do serviço seja recarregada automaticamente, assim você não precisa usar systemctl daemon-reload manualmente.

    
por 06.03.2018 / 07:34

Tags