루트가 아닌 사용자에 대해 최대 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.