NGINX가 계속 충돌합니다. 열려 있는 파일이 너무 많기 때문인 것 같습니다.

NGINX가 계속 충돌합니다. 열려 있는 파일이 너무 많기 때문인 것 같습니다.

제목에서 알 수 있듯이 Nginx 서버가 계속 충돌하는 것 같습니다. 이유는 알 수 없습니다.

내 오류 로그에 문제가 발생할 수 있는 몇 가지 힌트가 있습니다.

열린 파일 제한을 늘리려고 시도했는데 어느 정도 영향을 주었지만 별 소용이 없었습니다.

2015/09/29 17:18:01 [crit] 20560#0: accept4() failed (24: Too many open files)
2015/09/29 17:18:01 [crit] 20560#0: accept4() failed (24: Too many open files)

제한을 늘리려고 했지만 오류 로그에도 이 내용이 표시됩니다.

2015/09/29 17:18:02 [alert] 20632#0: setrlimit(RLIMIT_NOFILE, 300000000) failed (1: Operation not permitted)
2015/09/29 17:18:02 [alert] 20633#0: setrlimit(RLIMIT_NOFILE, 300000000) failed (1: Operation not permitted)
2015/09/29 17:18:02 [alert] 20560#0: recvmsg() truncated data

파일 제한을 늘리는 권한을 어떻게 부여하나요?

또한 이것이 내 서버가 충돌하는 이유이기도 합니까?

감사합니다!

방금 더 많은 데이터를 확인하고 파일을 편집했는데 하드 제한을 확인하면 어떤 이유에서인지 4096이라고 표시됩니까?

root@nalsec:~# sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.eth0.accept_ra = 0
fs.file-max = 2500000000000000000
root@nalsec:~# ulimit -Hn
4096

내 fs.file-max와 대조됩니다.

이것을 시도했는데 권한이 없다고 나옵니다(나는 루트입니다)

root@nalsec:~# ulimit -Hn 1000000000
-bash: ulimit: open files: cannot modify limit: Operation not permitted

이 파일을 이미 편집했는데 아무 소용이 없습니다. nano /etc/security/limits.conf

#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4

# End of file
nginx       soft    nofile  10240000000000000000000
nginx       hard    nofile  10240000000000000000000
*         hard    nofile      10240000000000000000000000
*         soft    nofile      10240000000000000000000000
root      hard    nofile      10240000000000000000000000
root      soft    nofile      10240000000000000000000000
www-data soft nofile 1024000000000000000
www-data hard nofile 1024000000000000000

답변1

fs.file-max에 대한 시스템 전체 제한입니다.시스템에서 열 수 있는 파일 설명자 수입니다. 프로세스별 제한에는 영향을 미치지 않습니다.

개별 프로세스의 파일 설명자 제한을 늘리려면 다음을 통해 수행하는 것이 가장 쉽습니다 limits.conf.

# cat /etc/security/limits.d/nofile.conf
* soft nofile 10000
* hard nofile 1000000

setrlimit그러면 기본적으로 모든 프로세스에 10,000개의 파일 설명자가 제공되며 원하는 경우 1,000,000개(를 통해)로 업그레이드를 요청할 수 있습니다 .

관련 정보