애플리케이션을 실행할 때 때때로 '파일이 너무 많이 열려 있습니다'라는 오류가 발생합니다.
limit -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에 있는 경우가 많습니다.
제한에는 두 가지 종류가 있습니다:
소프트 제한은 모든 사용자가 설정할 수 있지만 하드 제한은 루트만 변경할 수 있습니다. 제한은 프로세스의 속성입니다. 하위 프로세스가 생성될 때 상속되므로 시스템 전체 제한은 초기화 스크립트에서 시스템 초기화 중에 설정해야 하며, 사용자 제한은 사용자 로그인 중에 pam_limits를 사용하여 설정해야 합니다(예: 사용자 제한).
시스템이 부팅될 때 기본값이 설정되어 있는 경우가 많습니다. 따라서 개별 셸에서 한도를 재설정하더라도 재부팅 시 이전 값으로 다시 초기화될 수 있습니다. 기본값을 변경하려면 부팅 스크립트에서 존재하는 최대값 명령어를 찾아볼 수 있습니다.
Linux를 사용 중인데 권한 오류가 발생한 경우 /etc/limits.conf
또는 /etc/security/limits.conf
파일(파일 위치는 특정 Linux 배포판에 따라 다름)에서 허용되는 제한을 높여야 합니다.
예를 들어 컴퓨터의 모든 사용자가 열려 있는 파일 수를 최대 10000개까지 늘릴 수 있도록 허용하려면 limits.conf
파일에 해당 줄을 추가합니다.
* 하드 노파일 10000
그런 다음 로그아웃했다가 시스템에 다시 로그인하면 됩니다:
ulimit -n 10000
을 실행할 수 있을 것입니다.
/etc/security/limits.conf
에 다음 줄을 추가합니다.webuser hard nofile 64000
웹 사용자로 로그인합니다.
su - webuser
실행하여 .bashrc 및 .bash_profile 파일을 추가합니다.
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
$ ulimit -a | grep open
open files (-n) 64000
그러면 쾅, 쾅, 쾅!
[알림] (11) 리소스에는 >, 일시적으로 사용할 수 없습니다. apr_thread_create: 스레드할 작업자 생성할 수 없습니다.
'무제한' 에 '' /etc/init.d/httpd ulimit - s 동일팔레트에 봅니다. 이 서버 재부팅 필요 없습니다.