ulimit 값을 영구적으로 설정하는 방법은 무엇입니까?


19

데비안 위지 (Debian Wheezy)에서 다음을 ulimit -a제공합니다.

open files                      (-n) 1024

이것을 /etc/security/limits.conf에 추가합니다

*                hard    nofile          64000

그런 다음 재부팅하십시오.

그리고 ulimit -a여전히 최대 1,024 개의 열린 파일을 제공합니다.


이것이 가상 호스트일까요?
Dennis Nolte

아니오, 그것은 mongodb 서버입니다
Icu

답변:


15

옵션 1 : 소프트 한계를 더 높게 설정하지 않았습니다.

가능한 해결책:

/etc/security/limits.conf에 add

* soft nofile 2048

로 테스트

ulimit -n 2048 

옵션 2 : 사용자로 로그인하고 일부 "config"파일 (프로필, bashrc 등)에 소프트 한계가 낮은 값으로 설정되어 있습니다.

귀하의 etc 폴더 및 / 또는 홈 폴더에 ulimit 가능한 해결책이 있습니다.

경고 : 파일 / 디렉토리 수에 따라 특정 디렉토리 / 파일 만 고려할 수 있습니다.

추신 : 여기에 읽을만한 비슷한 질문이 많이 있습니다.

특별히 하드 대 소프트 한계

너무 많은 열린 파일 에 대해 자세히 설명하는 다른 솔루션에 대해서는 여기를 읽으십시오.


실제로는 하드 제한을 64000으로 설정하려고했기 때문에 소프트 제한은 여전히 ​​1024입니다. 이제 소프트 제한을 64000 + hard = 72000으로 설정하려고했지만 작동하지 않았습니다. 나는 또한 "*-nofile 64000"을 시도했고 같은 결과를 얻었습니다.
Icu

"너무 많은 열린 파일"을 읽은 후 커널 설정이 limits.conf 설정을 재정의한다고 생각했지만 "fs.file-max = 4933738"
Icu

@Icu는 다음과 같은 답변을 시도합니다 : serverfault.com/questions/93234/… 쉘과 관련이있을 수 있습니다
Dennis Nolte

'session required pam_limits.so'를 /etc/pam.d/other 및 common-session에 추가했지만 도움이되지 않습니다 ... 대안으로, init 스크립트에 'ulimit -n'을 추가하고 작동합니다 그러나 왜 쉘에서 올바른 값을 얻을 수 없는지 궁금합니다.
Icu

20

데비안에 버그가 있습니다. 늘리려면 파일 ulimit에 이것을 추가해야 /etc/pam.d/common-session합니다.

session required pam_limits.so

그리고 /etc/security/limits.conf추가 :

*               soft    nofile          65535
*               hard    nofile          65535

그런 다음 시스템을 재부팅하십시오.


1
/etc/pam.d/common-session파일을 변경할 필요가 없습니다 . 그것은 limits.conf파일에 다른 두 줄을 추가하여 작동했습니다 :-)
Francesco Casula

다시 부팅 할 필요는 없습니다.
David Goodwin

이것은 잔인합니다. 데비안 7에서는 지금 작동하지 않습니다. 해야 할 일이 확실하지 않습니다 :(-나는 새로운 질문을 열 수도 있습니다
NiCk Newman

12
팔. *와일드 카드는 작동하지 않습니다 root. root대신에 추가 했는데 *작동합니다. 감사합니다!
NiCk Newman 2016

@FrancescoCasula-데비안의 어떤 버전입니까? 이것이 실제로 버그인지, 그리고 여전히 존재하는지 알아 내려고 노력 중입니다 ...
UpTheCreek

0

Debian 10의 Apache의 경우 위의 방법으로도 효과가 없었습니다.

echo "APACHE_ULIMIT_MAX_FILES='ulimit -n 16384'" >> /etc/apache2/envvars
service apache2 restart

나는 확인했다 :

cat /proc/$pid/limits

..where $pid는 Apache 프로세스 중 하나의 프로세스 ID입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.