Amazon Linux에서 ulimit 값을 설정하여 시스템 리소스 할당량을 늘리고 싶습니다.
해결 방법
참고: 인스턴스와 데이터를 백업하여 유지하는 것이 좋습니다. 문제를 해결하기 전에 Amazon Elastic Block Store(EBS) 기반 Amazon Machine Image(AMI)를 생성하거나 Amazon EBS 볼륨의 스냅샷을 생성하십시오.
ulimit 값을 설정하려면 ulimit 명령을 실행하거나 시스템 구성 파일을 수정합니다. 개별 사용자의 시스템 리소스 할당량을 관리하려면 ulimit 명령을 실행합니다.
ulimit 명령은 다음과 같은 시스템 할당량을 제어합니다.
- nofile: 열린 파일 설명의 최대 수
- nproc: 최대 프로세스 수
- stack: 스택 크기
- core: 코어 파일 크기
- memlock: 최대 메모리 잠금 주소 공간
시스템 할당량에는 하드와 소프트의 두 가지 유형이 있습니다. 소프트 할당량은 시스템에서 적용하는 현재 할당량입니다. 하드 할당량에 도달할 때까지 소프트 할당량을 사용하여 할당량을 늘리거나 줄일 수 있습니다. 하드 할당량은 소프트 할당량을 늘릴 수 있는 최대값입니다. 루트 사용자만 하드 할당량을 늘릴 수 있습니다.
새 ulimit 값을 설정하기 전에 다음 명령을 실행하여 세션의 리소스 할당량을 확인합니다.
ulimit -a
real-time non-blocking time (microseconds, -R) unlimited
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 30446
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
참고: 하드 할당량을 쿼리하려면 ulimit 명령의 -a를 -Ha로 바꾸십시오.
임시 제한 값 설정
현재 셸 세션에 임시 ulimit 값을 설정하려면 ulimit 명령을 실행합니다. 소프트 할당량을 설정하려면 -S 옵션을 사용하고 하드 할당량을 설정하려면 -H 옵션을 사용합니다. 예를 들어, 열린 파일의 최대 수를 10000개로 변경하려면 다음 명령을 실행합니다.
ulimit -Sn 10000
ulimit -Hn 10000
참고: 10000을 열린 파일의 최대 수로 변경하려는 숫자로 바꾸십시오.
루트 사용자인 경우 다음 명령을 실행하여 ulimit nproc 값을 일시적으로 unlimited로 설정할 수 있습니다.
ulimit -u unlimited
영구 제한 값 설정
재부팅 시 영구 ulimit 값을 설정하려면 /etc/security/limits.conf 파일을 수정합니다.
/etc/security/ 폴더에 파일 이름이 limits.conf.bk인 limits.conf의 백업 파일을 생성하는 것이 좋습니다. 백업을 생성하려면 다음 명령을 실행합니다.
cp /etc/security/limits.conf /etc/security/limits.conf.bk
텍스트 편집기로 파일을 열고 /etc/security/limits.conf 파일에 다음 줄을 추가합니다.
username soft nofile 65536
username hard nofile 65536
username soft nproc 4096
username hard nproc 8192
참고: username을 사용자 이름으로, 65536을 열린 파일의 최대 수로, 4096 및 8192를 최대 사용자 프로세스 수로 바꾸십시오.
모든 사용자에게 숫자를 적용하려면 *를 사용합니다.
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 8192
변경 사항을 적용하려면 로그아웃한 다음 다시 로그인합니다.
사용자의 nproc 열린 파일 할당량을 확인하려면 다음 명령을 실행합니다.
무제한:
ulimit -u
소프트 할당량:
ulimit -Sn
하드 할당량:
ulimit -Hn
nproc 할당량을 영구 업데이트 /etc/security/limits.conf인 unlimited로 설정하려면 다음 구성을 사용합니다.
username soft nproc unlimited
username hard nproc unlimited
참고: username을 사용자 이름으로 바꾸십시오.
ulimit 값 모범 사례
ulimit 값을 설정할 때는 다음 모범 사례를 따르십시오.
- 애플리케이션 및 프로세스의 특정 요구 사항에 따라 ulimit 값을 설정합니다.
- 시스템의 리소스 사용량을 모니터링하고 필요에 따라 ulimit 값을 조정합니다.
- 새로운 ulimit 값으로 애플리케이션과 프로세스를 테스트하여 제대로 작동하는지 확인합니다.
- 시스템 전체 할당량을 설정할지 또는 특정 사용자 할당량을 설정할지 확인한 다음 구성을 조정합니다.
중요: 매우 높은 값을 설정하거나 unlimited 값을 설정하면 보안 및 안정성 문제가 발생할 수 있습니다.
관련 정보
Red Hat Enterprise Linux(RHEL) 웹사이트의 ulimit 값을 설정하는 방법