nginx uLimit 'worker_connections가 열린 파일 자원 제한을 초과했습니다 : 1024'


15

나는이 오류가 계속 발생 nginx/error.log하고 나를 몰아 넣습니다.

8096 worker_connections exceed open file resource limit: 1024

나는 내가 생각할 수있는 모든 것을 시도했으며 여기서 nginx를 제한하는 것이 무엇인지 알아낼 수 없습니다. 내가 뭘 놓쳤는 지 말할 수 있습니까?

nginx.conf 이있다 :

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

다음 security/limits.conf과 같이 시스템의 Ulimit를 변경 했습니다.

# 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

여전히 오류가 표시되었습니다. 그래서 편집을 시도 /etc/default/nginx하고이 줄을 추가했습니다.

ULIMIT="-n 65535"

여전히 같은 오류가 표시됩니다. nginx 작업자 연결을 1024로 제한하는 것이 무엇인지 알 수 없습니다.

데비안 7 + nginx가 있습니다

답변:


30

worker_rlimit_nofile 65535;기본 컨텍스트 내에서 nginx.conf에 설정하십시오 .


1
그게 다야! 그것은 그것을 고쳤다. 오 당신은 구세주입니다. ULimit이에서 수동으로 설정되지 않은 경우에도 작동합니다 /etc/default/nginx file. 대박. @Xaviour 감사합니다
Neel

1
잘 했어요 자비에르
Dave Holland

@ Xavier이 오류 메시지를 제거했지만 아래 답변에서 언급 한 것처럼 ulimit를 변경하지 않고 왜 작동하는지 설명 할 수 있습니까? Google 검색에서 limits.conf 또는 systcl.conf에서 ulimit를 변경하라는 메시지가 표시되지만 아무 효과가 없습니다.
Bsienn

2

사용자가 되십시오 :

su - nginx

한계를 확인하십시오.

ulimit -Hn
ulimit -Sn

파일 시스템에서 열 수있는 파일 수를 편집하십시오.

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

변경 사항을로드하십시오.

sysctl -p

도움이되는지 확인하십시오.


init을 사용하고 있으며 systemctl을 설치하지 않았습니다. 차이가 있을까요?
Neel

Nginx 사용자로 변경하면 ulimit -Hn이 올바르게 표시됩니다. 그런 다음 확인 init.d/nginx하고 ULIMIT가 기본 폴더 (이미 설정되어 있음)에 설정되어 있는지 확인한 다음 해당 값을 설정해야하지만 다음과 같이 설정하지 않았습니다.Check if the ULIMIT is set in /etc/default/nginx
Neel

file-max를 변경 한 후 sysctl -p우분투 18.04.2가 멈 추면 너무 많은 파일이 열리고 부팅되지 않습니다. 보안 부팅에서 코드를 제거하여 OS를 다시 부팅해야했습니다.
Bsienn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.