ulimit
프로세스가 사용하는 자원에 대한 제어를 관리할 수 있게 도아준다.
soft limit와 hard limit 두 가지 타입이 있다.
soft limit : 소프트 제한은 사용자가 설정한 값으로, 사용자는 이 값을 초과할 수 있지만 자신의 프로세스에 대한 리소스 사용이 이 값을 초과하면 시스템은 알림을 생성하거나 제한을 적용할 수 있습니다.
hard limit : 하드 제한은 시스템 전체에서 적용되는 제한으로, 사용자는 이 값을 초과할 수 없습니다
-H 옵션과 -S 옵션을 이용해 hard/soft limit을 구분할 수 있다.
-H, -S 옵션을 명시하지 않으면 soft limit과 hard limit이 동시에 설정된다.
-a : 모든 limit값 출력
-b : 최대 soket buffer size
-c : 최대 코어 파일 사이즈
-d : 프로세스 data segment의 최대 크기
-f : shell에 만들어질 수 있는 파일의 최대 크기
-s : 최대 stack size
-n : open file descriptor의 최대 수
-u : 한 유저가 실행할 수 있는 최대 process 수
-x : 파일 락의 최대값
-T : thread 수의 최대값 (OS 버전에 따라 옵션이 작동하지 않는 경우도 있습니다)
-- JAVA에서 동시에 생성 가능한 THREAD 수는 MAX USER PROCESSES를 따른다.
-- JAVA에서 소켓 통신(HTTP API, JDBC 커녁션 등)은 OPEN FILE 옵션을 따라간다.
ulimit [옵션] [자원수]
위 같은 방식으로 자원 제한을 설정할 수 있다.
stack size를 256으로 바꾸고 싶으면 아래 명령어를 입력하면 된다.
이렇게 변경하면 재접속하면 다시 원상 복귀된다.
영구적인 변경을 위해서는 /etc/security/limits.conf를 설정해줘야 한다.
ulimit -s 256
설정파일 위치
/etc/security/limit.conf
이를테면 hwan이라는 유저의 stack 개숫를 8012으로 늘리려한다하면
위처럼 수정하고 저장 후 재시작하면 된다.
재시작
sudo systemctl restart systemd-logind
확인
ulimit -a