OS cgroup을 통해 특정 사용자의 리소스(CPU, MEM)를 제한하는 방법
페이지 정보
작성자 OSworker 아이디로 검색 전체게시물 댓글 0건 조회 25회 좋아요 0회 작성일 26-09-30 19:17본문
안녕하세요
오늘은 cgroup을 통해 특정 사용자의 리소스를 제한하는 방법을 안내드리려 합니다.
왜 사용자의 리소스를 제한 하려고 하나요?
특정 고객사에서 서로 다른 유저로 APP두개를 기동합니다. 그런데
특정 AP에서 메모리를 과다하게 사용하여 OS에서 OOM이 발생하는 케이스가 몇 차례 발생하여 해당 AP 프로세스를 기동하는 사용자의 리소스를 cgroup을 통해 제한하는 설정을 하고싶습니다.
어떻게 할수있을까요?
아래와 같은 설정으로 이를 해결 가능합니다.
1. 모든 사용자에게 기본 제한 설정하기 (user.slice)
모든 일반 사용자에게 공통으로 적용되는 제한을 설정하려면 user.slice 설정을 변경합니다.
1) 설정 디렉터리 생성:
# mkdir -p /etc/systemd/system/user.slice.d
2) 드롭인(drop-in) 설정 파일 생성 (예: /etc/systemd/system/user.slice.d/limits.conf):
[Slice]
# 메모리 최대 사용량 제한 (예: 2GB)
MemoryMax=2G
# CPU 사용량 쿼타 제한 (예: 코어 2개 분량인 200% 또는 단일 코어의 50% 등)
CPUQuota=200%
3) systemd 데몬 재로드 및 적용:
# systemctl daemon-reload
2. 특정 사용자만 개별 제한 설정하기 (user-<UID>.slice)
1) 특정 사용자용 설정 디렉터리 생성:
# mkdir -p /etc/systemd/system/user-1000.slice.d
2) 설정 파일 생성 (/etc/systemd/system/user-1000.slice.d/override.conf):
[Slice]
MemoryMax=1G
CPUQuota=100%
3) systemd 데몬 재로드 및 적용:
# systemctl daemon-reload
3. 명령어(CLI)로 실시간 제한 설정하기
- 서버를 재부팅하지 않고 실행 중인 사용자 slice에 즉시 제한을 적용할 수도 있습니다.
# systemctl set-property user-1000.slice MemoryMax=1G CPUQuota=50%
참고링크 :
- How to limit CPU or Memory per user using systemd?
. https://access.redhat.com/solutions/7048115
댓글목록
등록된 댓글이 없습니다.


Top