14.04+에서는 열린 파일 제한을 999999 이상으로 늘릴 수 없습니다.

14.04+에서는 열린 파일 제한을 999999 이상으로 늘릴 수 없습니다.

. /etc/security/limits.conf​하지만 지나갈 수 없습니다 999999. 이 값을 초과하는 값은 기본값으로 돌아가 1024거나 무제한으로 설정할 수 없습니다.

여기 나의limits.conf

* hard nofile 999999
* hard nofile 999999
root hard nofile 999999
root soft nofile 999999

위의 내용은 잘 작동하고 ulimit -n반환됩니다 999999.

하지만 값을 한 단계 높게 만들면 작동하지 않습니다 unlimited. 반품-1infinityulimit -n1024

나는 여기를 참조했다:limits.conf - pam_limits 모듈의 구성 파일 | 우분투 맨페이지

감사해요

답변1

10개월 늦은 건 알지만 모든 사용자에 대해 하드 제한을 두 번 설정하셨습니다. 두 번째 줄을 소프트 ulimit로 변경합니다.

* hard nofile 999999
* soft nofile 999999
root hard nofile 999999
root soft nofile 999999

이 작업을 수행하면 다음이 표시됩니다.

$ ulimit -n
999999
$ 

제한이 올바르게 정의되었으므로 파일은 항상 루트에서 작동해야 합니다.

또한 -1, 무한대, 무제한 등을 사용할 수 없으며 리터럴 값을 사용해야 합니다. 이에 대한 최대 지원 값은 커널에 정의되어 있으며 /proc/sys/fs/nr_open에 표시됩니다. 내 centos 7 및 debian strech 환경에서는 동일한 값을 얻습니다.

$ cat /proc/sys/fs/nr_open
1048576
$

또한 한도를 업데이트하려면 새 세션을 시작해야 합니다.

답변2

이 작업을 수행하려면 수정해야 할 세 가지 파일이 있습니다.

  • /etc/security/limits.conf
  • /etc/pam.d/common-session
  • /etc/pam.d/common-session-noninteractive

첫 번째 파일에 필수 줄을 이미 추가했으며 다른 두 파일에는 다음 줄이 필요합니다.

session required pam_limits.so

참고:

대부분의 리소스에서 강조하지 않는 점은 프로세스 실행을 담당하는 모든 항목에 의해 한계가 실제로 쉽게 수정될 수 있다는 것입니다. ulimit -n(올바른 사용자로 실행)이 방금 설정한 숫자를 제공하지만 cat /proc/{process_id}/limits가 여전히 낮은 숫자를 인쇄하는 경우 프로세스 관리자, init 스크립트 또는 당신의 한계를 엉망으로 만드는 비슷한 일. 또한 프로세스는 상위 프로세스의 제한을 상속한다는 점을 명심해야 합니다.

따라서 그러한 프로세스가 존재하는 경우 해당 프로세스가 작동하도록 구성 파일을 수정해야 합니다.

원천: https://underyx.me/2015/05/18/raising-the-maximum-number-of-file-descriptors

관련 정보