설명
프로세스 수 제한이 없으면 비정상 동작이나 악성 루프가 짧은 시간 안에 많은 프로세스를 만들어 호스트 자원을 고갈시킬 수 있습니다.
메모리와 CPU 제한만으로는 모든 자원 고갈 상황을 막기 어렵습니다. 프로세스 수 제한까지 함께 설정해야 컨테이너 단위의 폭주를 더 잘 통제할 수 있습니다.
잠재적 영향
- 하나의 컨테이너가 과도한 프로세스를 생성해 호스트 자원을 고갈시킬 수 있습니다.
- 같은 호스트의 다른 서비스까지 영향을 받아 연쇄 장애가 생길 수 있습니다.
- 비정상 프로세스 증가를 초기에 통제하기 어려워집니다.
해결 방법
- 각 서비스에 맞는
pids_limit값을 명시하고-1같은 무제한 값은 피하세요. - CPU, 메모리 제한과 함께 프로세스 수 제한을 운영 표준으로 묶어 관리하세요.
- 실제 워크로드 특성을 보고 적정 수를 측정한 뒤 제한값을 조정하세요. 너무 낮으면 정상 프로세스나 스레드 생성도 실패할 수 있습니다.
예시
빌드 컨텍스트의 Dockerfile은 생략했습니다. 10은 예시이며 애플리케이션의 프로세스·스레드 수에 맞춰 조정하세요.
변경 전
yaml
services:
auth:
build:
context: .
mem_limit: 500M
변경 후
yaml
services:
auth:
build:
context: .
pids_limit: 10
mem_limit: 500M
설명:
- 변경 전: 메모리 제한은 있어도 이 구성에는 프로세스 수 제한이 없습니다.
- 변경 후:
pids_limit로 생성 가능한 프로세스 수를 제한합니다. 실제 실행 환경에서 적용 상태와 정상 동작을 확인하세요.