[linux] Linux에서 열린 파일 수 제한을 어떻게 변경합니까? [닫은]

내 응용 프로그램을 실행할 때 때때로에 대한 오류가 발생 too many files open합니다.

실행시 ulimit -a한계가 1024임을보고합니다. 한계를 1024 이상으로 늘리려면 어떻게합니까?

편집
ulimit -n 2048 하면 권한 오류가 발생합니다.



답변

당신은 항상 할 수 ulimit -n 2048있습니다. 현재 쉘에 대한 한계 만 재설정하며 지정한 수는 하드 한계를 초과하지 않아야합니다.

각 운영 체제의 구성 파일에는 서로 다른 하드 제한 설정이 있습니다. 예를 들어 Solaris에서 하드 파일 열기 제한은 / etc / system에서 부팅시 설정할 수 있습니다.

set rlim_fd_max = 166384
set rlim_fd_cur = 8192

OS X의 경우 동일한 데이터가 /etc/sysctl.conf에 설정되어 있어야합니다.

kern.maxfilesperproc=166384
kern.maxfiles=8192

Linux에서 이러한 설정은 종종 /etc/security/limits.conf에 있습니다.

한계에는 두 가지가 있습니다.

  • 소프트 한계는 단순히 현재 시행되는 한계입니다.
  • 하드 한계는 소프트 한계를 설정하여 초과 할 수없는 최대 값을 표시합니다.

소프트 제한은 모든 사용자가 설정할 수있는 반면 하드 제한은 루트 만 변경할 수 있습니다. 한계는 프로세스의 속성입니다. 하위 프로세스가 작성 될 때 상속되므로 init 스크립트에서 시스템 초기화 중에 시스템 전체 한계를 설정하고 사용자 로그인 중에 pam_limits를 사용하여 사용자 한계를 설정해야합니다.

컴퓨터를 부팅 할 때 종종 기본값이 설정됩니다. 따라서 개별 쉘에서 ulimit를 재설정하더라도 재부팅시 이전 값으로 다시 재설정 될 수 있습니다. 기본값을 변경하려는 경우 존재 ulimit 명령에 대해 부트 스크립트를 grep 할 수 있습니다.


답변

Linux를 사용 중이고 권한 오류가 발생하면 /etc/limits.conf또는 /etc/security/limits.conf파일 에서 허용 된 한계를 늘려야 합니다 (파일이있는 위치는 특정 Linux 배포판에 따라 다름).

예를 들어, 컴퓨터의 모든 사용자가 열린 파일 수를 최대 10000까지 올리려면 파일에 줄을 추가 limits.conf하십시오.

* hard nofile 10000

그런 다음 시스템에 로그 아웃하고 다시 로그인하면 다음을 수행 할 수 있습니다.

ulimit -n 10000

권한 오류가 없습니다.


답변

1) 다음 줄을 추가하십시오 /etc/security/limits.conf

webuser hard nofile 64000

그런 다음 웹 사용자로 로그인

su - webuser

2) 웹 사용자를 위해 다음 두 파일 편집

다음 을 실행하여 .bashrc 및 .bash_profile 파일을 추가하십시오 .

echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile

3) 로그 아웃 한 후 다시 로그인하여 변경 사항이 올바르게 작성되었는지 확인하십시오.

$ ulimit -a | grep open
open files                      (-n) 64000

그것과 그들 붐, 붐 붐.


답변

일부 서비스가 ulimits로 묶인 경우 적절한 명령을 서비스의 init-script에 넣는 것이 더 쉬운 경우가 있습니다. 예를 들어 Apache가보고 할 때

[경고] (11) 자원을 일시적으로 이용할 수 없음 : apr_thread_create : 작업자 스레드를 생성 할 수 없음

넣어보십시오 ulimit -s unlimited/etc/init.d/httpd. 서버 재부팅이 필요하지 않습니다.


답변