서버는 Ubuntu 13.04 (GNU / Linux 3.9.3-x86_64-linode33 x86_64)입니다.
nginx는 nginx / 1.2.6입니다.
나는 지금 몇 시간 동안이 일을 해 왔으므로 여기에 내가 얻는 것이 있고 여기에 내가 한 일이 있습니다.
tail -f /usr/local/nginx/logs/error.log
2013/06/18 21:35:03 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:05 [crit] 3426#0: accept4() failed (24: Too many open files)
Nginx 실행 중 :
geuis@localhost:~$ ps aux | grep nginx
root 3422 0.0 0.0 39292 380 ? Ss 21:30 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 3423 3.7 18.8 238128 190848 ? S 21:30 0:13 nginx: worker process
nobody 3424 3.8 19.0 236972 192336 ? S 21:30 0:13 nginx: worker process
nobody 3426 3.6 19.0 235492 192192 ? S 21:30 0:13 nginx: worker process
nobody 3427 3.7 19.0 236228 192432 ? S 21:30 0:13 nginx: worker process
nobody 3428 0.0 0.0 39444 468 ? S 21:30 0:00 nginx: cache manager process
/etc/security/limits.conf에서 수정 된 소프트 / 하드 제한 (파일 끝에서 설정)
root soft nofile 65536
root hard nofile 65536
www-data soft nofile 65536
www-data hard nofile 65536
nobody soft nofile 65536
nobody hard nofile 65536
최대 파일 읽기
cat /proc/sys/fs/file-max
500000
그리고 /etc/pam.d/common-session에서 :
session required pam_limits.so
이것을 추가하고 좋은 측정을 위해 서버를 다시 시작하면 nginx의 경우 부모 프로세스의 PID를 가져 와서 소프트 / 하드 한계를 계산합니다.
cat /proc/<PID>/limits
Limit Soft Limit Hard Limit Units
Max open files 1024 4096 files
부모 프로세스는 ‘루트’로 실행되고 4 명의 작업자는 ‘아무도’로 실행되지 않습니다.
root 2765 0.0 0.0 39292 388 ? Ss 00:03 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 2766 3.3 17.8 235336 180564 ? S 00:03 0:21 nginx: worker process
nobody 2767 3.3 17.9 235432 181776 ? S 00:03 0:21 nginx: worker process
nobody 2769 3.4 17.9 236096 181524 ? S 00:03 0:21 nginx: worker process
nobody 2770 3.3 18.3 235288 185456 ? S 00:03 0:21 nginx: worker process
nobody 2771 0.0 0.0 39444 684 ? S 00:03 0:00 nginx: cache manager process
어떻게해야하는지 알고 Google에서 얻을 수있는 모든 것을 시도했습니다. 나는 할 수 의 nginx가 증가 할 파일 제한을받을.
도움?
답변
nginx에 다음 줄을 추가하고 프로세스를 다시 시작하십시오.
worker_rlimit_nofile 30000;
이를 통해 작업자는 더 많은 파일을 가져올 수 있습니다. 그런 다음 다음을 통해 확인할 수 있습니다.
su - nobody
ulimit -Hn
ulimit -Sn
새로운 하드 / 소프트 한계를 출력해야합니다.
답변
우분투에서 /etc/pam.d/su를 편집하여 필요한 라인 세션을 추가하거나 주석 해제하십시오. pam_limits.so
또한 /etc/security/limits.conf에서 공백이 아닌 문자 사이에 TABS가 있는지 확인하십시오.
답변
해당 파일을 편집 한 후 다음 명령을 실행하십시오
sysctl -p
그런 다음 nginx를 다시 시작하십시오.