nginx uLimit 'worker_connections excede o limite de recursos de arquivo aberto: 1024'

14

Eu continuo recebendo esse erro nginx/error.loge está me deixando louco:

8096 worker_connections exceed open file resource limit: 1024

Eu tentei de tudo em que consigo pensar e não consigo descobrir o que está limitando o nginx aqui. Você pode dizer o que estou perdendo?

nginx.conf tem o seguinte:

worker_processes 4;
events {
        worker_connections 8096;
        multi_accept on;
        use epoll;
}

Mudei o Ulimit do meu sistema da seguinte maneira security/limits.conf:

# This is added for Open File Limit Increase
*               hard    nofile          199680
*               soft    nofile          65535

root            hard    nofile          65536
root            soft    nofile          32768

# This is added for Nginx User
nginx           hard    nofile          199680
nginx           soft    nofile          65535

Ainda estava mostrando o erro. Então, eu também tentei editar /etc/default/nginxe adicionei esta linha:

ULIMIT="-n 65535"

Ainda está mostrando o mesmo erro. Não consigo descobrir o que está limitando a conexão do nginx worker a apenas 1024. Você pode me indicar?

Eu tenho o Debian 7 + nginx

Neel
fonte

Respostas:

29

Defina worker_rlimit_nofile 65535;no nginx.conf dentro do contexto principal.

Xavier Lucas
fonte
1
É isso aí! Isso consertou. Oh você é um salvador. Ele funciona agora mesmo quando o ULimit não está configurado manualmente /etc/default/nginx file. Impressionante. Obrigado @Xaviour
Neel
1
bem feito Xavier.
Dave Holland
@ Xavier isso removeu o erro msg, mas você pode explicar por que isso funciona sem alterar o ulimit, conforme mencionado na resposta abaixo? as pesquisas no google dizem para alterar o ulimit em limits.conf ou systcl.conf, mas nenhum funciona para mim.
Bsienn 11/11/19
2

Torne-se usuário:

su - nginx

Verifique os limites:

ulimit -Hn
ulimit -Sn

Edite o número de arquivos que o sistema de arquivos permitirá que você abra:

vi /etc/sysctl.conf
fs.file-max = 70000

carregue suas alterações:

sysctl -p

Veja se isso ajuda.

Dave Holland
fonte
Estou usando o init e não instalou o systemctl. Faria diferença?
Neel 30/10
Quando mudei para usuário do Nginx, o ulimit -Hn está sendo exibido corretamente. Em seguida, verifiquei init.d/nginxe ele verifica se o ULIMIT está definido na pasta padrão (onde já está definido) e, em seguida, deve definir esse valor, mas ele não faz:Check if the ULIMIT is set in /etc/default/nginx
Neel
Depois de alterar o arquivo max e, assim que eu executo o sysctl -pubuntu 18.04.2, trava muitos arquivos abertos e não inicializa, tive que remover o código na inicialização segura para fazer o sistema operacional inicializar novamente.
Bsienn 11/11/19