루트가 아닌 사용자에 대해 최대 4096 개의 열린 파일을 초과 할 수없는 이유는 무엇입니까?


13

nofile이 문제와 관련된 모든 StackExchange 답변을 따름에도 불구하고 우분투 14.04에서 루트가 아닌 사용자 의 제한 을 늘릴 수없는 것 같습니다 . 지금까지 나는 :

$ cat /etc/security/limits.d/custom.conf
@www-data hard nofile 50000
@www-data soft nofile 50000
# even tried specifying the username directly:
myuser hard nofile 50000
myuser soft nofile 50000

$ grep 'limits' /etc/pam.d/common-session*
/etc/pam.d/common-session:session required        pam_limits.so
/etc/pam.d/common-session-noninteractive:session required        pam_limits.so

$ cat /proc/sys/fs/file-max
101232

재부팅, 로그인 및

$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted

여전히 어떻게 든 루트가 아닌 사용자를위한 4096 최대의 제한 될 것으로 보인다.


나는 데 동일한 문제 우분투 16.10 바탕 화면에 있습니다. 내가 노력할 상관없이, 한도 1024 중 하나 없거나 4096
NathanAldenSr

답변:


13

Ubuntu 14.04를 사용하여 설명 된 하드 한계를 얻었습니다.

user@notebook:~$ ulimit -Hn 4096  

나는 ulimit를 사용하여 그것을 낮출 수는 있지만 질문이 설명하는 것처럼 그것을 늘릴 수는 없습니다. ulimit의 매뉴얼은 다음과 같이 설명합니다.

오직 루트 만이 하드 한계를 증가시킬 수 있습니다

그래서 /etc/security/limits.conf다음과 같이 더 높은 한계를 설정하려고했습니다 .

user hard nofile 9999 

그리고 새로운 로그인 ssh localhost -l user은 나에게 새로운 한계를 부여했습니다.

user@notebook:~$ ulimit -Hn 9999

이것이 당신에게도 효과가 있기를 바랍니다.


감사합니다 TomTomTom. 나는 이미 /etc/security/limits.d/custom.conf에 그러한 변화가 있습니다. 제안한대로 /etc/security/limits.conf에 직접 넣으려고했는데 여전히 "bash : ulimit : 열린 파일 : 제한을 수정할 수 없습니다 : 작업이 허용되지 않습니다"라는 메시지가 나타납니다.
Caffeine Coma

나는-단지 추측-두 가지 이유 중 하나, 왜 그것이 당신을 위해 작동하지 않는지 :
TomTomTom

1
불완전한 주석을 편집하기에는 너무 오래 걸렸습니다. 나는 우리가 간다 : 나는-단지 추측-두 가지 이유 중 하나, 이것이 이것이 당신에게 효과가없는 이유 : 1. /etc/security/limits*아직 알려지지 않은 이유로 로그인 메커니즘으로 읽히지 않습니다. 2. 하드 제한이 다른 곳에서 4096으로 설정되고 "루트 만 증가 할 수 있습니다 ...". .bashrc셸에 따라 프로파일을 확인 하거나 /etc제한이 설정 될 수있는 다른 장소를 확인할 수 있습니다 (예 :) find /etc | grep -e ulimit -e 4096 -e nofile. BTW : ssh를 시도 했습니까? 그리고 : /etc/ssh/sshd.conf어떤 이유로 PAM을 피하기 위해 변경 했습니까?
TomTomTom

예-모든 로그인은 ssh를 통해 이루어집니다. UsePAM을 비활성화했습니다. 여러 안내서에서 ssh 키 기반 로그인 만 허용하도록 권장합니다. 문제가 있는지 확인하기 위해 일시적으로 켭니다. 감사!
카페인 코마

Afaik, PAM이 읽어야 /etc/security/limits*할 내용입니다. PAM을 활성화하여이를 확인하려고 할 수도 있습니다. PAM을 비활성화하여 차이점을보고 결과를보고하려고합니다. --- 예! 그게 다야! PAM을 비활성화하면 내 한계도 4096으로 설정됩니다 /etc/security/limits.conf.
TomTomTom

4

기사 는 귀하의 문제를 해결한다고 생각합니다.

기본적으로 ulimit 명령을 사용하여 사용 가능한 자원을 늘리십시오.

예를 들면 다음과 같습니다.

다음 명령 명령을 사용하여 열린 파일 디스크립터의 최대 수를 표시하십시오.

cat /proc/sys/fs/file-max

hard 및 soft 값을 보려면 다음과 같이 명령을 실행하십시오.

# ulimit -Hn
# ulimit -Sn

httpd 또는 oracle 사용자의 hard 및 soft 값을 보려면 다음과 같이 명령을 실행하십시오.

# su - username

최대 파일 수를 수정하려면 다음과 같이 커널 변수 / proc / sys / fs / file-max에 새 값을 설정하여 열린 파일의 최대 수를 늘릴 수 있습니다 (루트로 로그인).

# sysctl -w fs.file-max=100000

위의 명령은 파일을 100000 개로 제한합니다. /etc/sysctl.conf재부팅 후 설정이 그대로 유지되도록 파일 을 편집 하고 다음 줄을 넣어야합니다. 그렇게하려면 다음과 같이 구성 지시문을 추가하십시오.

fs.file-max = 100000

파일을 저장하고 닫습니다. 변경 사항을 적용하거나 다음 명령을 입력하려면 사용자가 로그 아웃했다가 다시 로그인해야합니다.

# sysctl -p

다음 명령으로 설정을 확인하십시오.

# cat /proc/sys/fs/file-max

또는:

# sysctl fs.file-max

위의 절차는 시스템 전체 파일 디스크립터 (FD) 한계를 설정하지만 다음과 같이 한계를 편집 하여 파일을 편집 httpd하여 사용자를 특정 한계로 제한 (또는 다른 사용자) 할 수 있습니다 ./etc/security/limits.conf/etc/security/limits.conf

httpd soft nofile 4096
httpd hard nofile 10240

그런 다음 확인하십시오.

# su - httpd
$ ulimit -Hn
$ ulimit -Sn

다른 Linux 배포판에 문제가있는 경우 다음을 확인하고 활성화 /etc/pam.d/login했는지 확인하십시오 pam_limits.so. 예 :

session required pam_limits.so

2
안녕 브룩. 불행히도, 나는 이미 그 기사의 제안을 시도했습니다. 비록 'ulimit -Hn'은 나에게 새로운 것이었지만; 그것은 계속 부딪 치는 한계 인 4096을 인쇄합니다.
Caffeine Coma

0

서비스 인 경우 /etc/systemd/system/{ServiceName}.service추가 에서 제한을 설정하려고 시도 할 수 있습니다.LimitNOFILE=65536


우분투 14.04는 기본적으로 systemd를 사용하지 않습니다.
number5

우분투 16.04, Tomcat 8가 저를 위해 일했습니다
Arjang
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.