/etc/security/limits.conf soft nproc limit이 무시 된 것으로 보입니다


18

내 MongoDB 데이터베이스가로드 중에 문제가 발생하여 다음과 같은 오류가 로그를 스팸으로 표시했습니다.

[initandlisten] pthread_create failed: errno:11 Resource temporarily unavailable
[initandlisten] can't create new thread, closing connection

1024에있는 "ulimit -u"또는 "Max processes"설정을 높여야한다는 결론에 도달했으며 웹 프런트 엔드가 시작된 경우 사용량이 초과했을 수 있습니다 (확인 방법은 확실하지 않음) .

마지막 두 줄을 추가하기 위해 /etc/security/limits.conf를 편집했습니다 (처음 두 줄은 이미 존재했습니다).

*                soft    nofile          350000
*                hard    nofile          350000
*                soft    nproc           30000
*                hard    nproc           30000

그런 다음 시스템을 재부팅했습니다 (BTW를 수행 했습니까, 아니면 mongod 서비스를 다시 시작해야합니까?)

재부팅 후 mongod 프로세스의 프로세스 한계를 검토하면 소프트 한계가 무시 된 것 같습니다.

$ cat /proc/2207/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             1024                 30000                processes
Max open files            350000               350000               files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       273757               273757               signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

$ whoami
mongod


$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 273757
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 350000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

하드 제한과 소프트 제한 모두 "최대 프로세스"는 /etc/security/limits.conf 파일에 따라 30000이 될 것으로 예상했지만 어려운 것만 있습니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까?

AWS EC2에서 Amazon Linux를 실행하고 있습니다.

bash-4.1$ cat /etc/*-release
Amazon Linux AMI release 2012.09

2
/etc/security/conf.d/를 보시겠습니까? 때로는 기본 limits.conf에 설정된 내용을 무시하는 파일이 있습니다.
dmourati

두마 라티, 고마워, 네 말이 맞아
John M

답변:


22

/etc/security/limits.d/90-nproc.conf 파일을 확인하십시오. 설정이 무시 될 수 있습니다. 작년 에이 똑같은 문제에 대해 썼습니다 http://scott.cm/max-processes-1024-limits-conf/


고마워요. "mongod"프로세스를 다시 시작하는 것만으로도 새로운 설정을 읽을 수 있는지 알려 주실 수 있습니까?
John M

예, 일단 한계를 변경하면 mongod 프로세스를 다시 시작하기 만하면 새로운 한계를 읽습니다.
Scott Mcintyre

고마워요, 그것도 효과가 있었어요. 두 한계는 이제 30000입니다. 스캇!
John M

시스템 파일을 편집하는 대신 파일을 만든 /etc/security/limits.d/것으로 시작 하여 파일 99_local을 만든 것으로 표시하는 것이 좋습니다.
Alastair 어바인

1

mongodb 데이터베이스를 시작하는 스크립트 시작시 ulimit 값을 변경하려고 시도 할 수 있습니다.

자식 프로세스는 호출 프로세스에서 리소스 제한을 상속합니다.


글로벌 가치를 바꾸고 싶습니다. 'nofile'과 'nproc'의 하드 한계에는 효과가 있었지만 'nproc'의 소프트 한계에는 효과가 없었습니다.
John M
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.