[ 2022.11.14 TIL-Docker 컨테이너 리소스 관리]

Coosla·2022년 11월 14일
0

TIL

목록 보기
18/29
post-thumbnail

Docker 컨테이너 리소스 관리

✏️ 실행하려는 컨테이너에 하드웨어 리소스 제한하기

  • 컨테이너는 기본적으로 호스트 하드웨어 리소스의 사용 제한을 받지 않음
  • 여러 컨테이너를 사용할 때에는 필요로 하는 만큼의 리소스만 할당 해야함
  • docker run ~ 명령어의 옵션을 통해 리소스 제한을 걸어줄 수 있음
  • 메모리 리소스 제한
    • --memory, -m
      • 컨테이너가 사용할 최대 메모리 양을 지정
    • --memory-swap
      • 컨테이너가 사용할 스왑 메모리 영역에 대한 설정
      • 설정값은 메모리 + 스왑
      • 생략 시 메모리의 2배가 설정됨
    • --memory-reservation
      • --memory 값보다 적은 값으로 구성하는 소프트 제한 값 설정
    • --oom-kill-disable
      • OOM Killer가 프로세스 kill 하지 못하도록 보호
      • 물리적인 메모리 공간이 부족하면 OOM Killer를 가동하여 프로세스를 죽임
  • CPU 리소스 제한
    • --cpus
      • 컨테이너에 할당할 CPU 코어수를 지정
    • --cpuset-cpus
      • 컨테이너가 사용할 수 있는 CPU나 코어를 할당
      • CPU index는 0부터 시작
    • --cpu-share
      • 컨테이너가 사용하는 CPU 비중을 1024값을 기반으로 설정
      • 상대적인 값으로 2048이면 다른 컨테이너보다 2배많은 리소스 할당
  • Block I/O 제한
    • --blkio-weight, --blkio-weight-device
      • Block IO의 Quata를 설정 가능
      • 100 ~ 1000까지 선택, 기본값은 500
    • --device-read-bps, --device-write-bps
      • 특정 디바이스에 대한 읽기와 쓰기 작업의 초당 제한을 kb, mb, gb 단위로 설정
    • --device-read-iops, --device-write-iops
      • 컨테이너의 read/write 속도의 쿼터를 설정
      • 초당 quota를 제한하여 I/O를 발생
      • 0 이상의 정수로 표기
      • 초당 데이터 전송량 = IOPS * 블럭크기(단위 데이터 용량)

✏️ 컨테이너가 사용하는 리소스 모니터링하기

  • 컨테이너 모니터링 명령어
    • docker stat
      • 실행중인 컨테이너 런타임 통계 확인
    • docker event
      • 도커 호스트의 실시간 이벤트 정보를 수집해서 출력
    • cAdvisor
  • 리눅스 부하 테스트 툴
    • 부하 테스트 프로그램 stress를 설치하고 동작시키는 컨테이너 빌드
    • CPU 부하 테스트
      • 2개 CPU 코어를 100% 사용하도록 부하 발생
      • stress --cpu 2
    • 메모리 부하 테스트
      • 프로세스 수 2개와 사용할 메모리만큼 부하 발생
      • stress --vm 2 --vm-bytes 사용할크기
profile
프로그래밍 언어 공부 정리

0개의 댓글