※ stress container 생성
컨테이너 빌드 : 부하 테스트 프로그램 stress 를 설치하고 동작시키는 컨테이너 빌드
CPU 부하 테스트 : 2개 cpu core를 100% 사용하도록 부하 발생 : stress --cpu 2
메모리 부하 테스트 : 프로세스 2개와 사용할 메모리만큼 부하 발생 : stress --vm 2 --vm-bytes <사용할 크기>
$vi dockerfile |
FROM debian MAINTAINER jwjeong <metalk2003@gmail.com> RUN apt-get update; apt-get install stress -y CMD ["/bin/sh", "-c", "stress -c 2"] |
[Docker 컨테이너 메모리 리소스 제한]
swap 메모리 용량 제한이 실제 메모리 제한과 어떤 관련성이 있는 지 확인
docker run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 90m -t 5s
// -m 100m --memory-swap 100m = 메모리 100m, swap 메모리 0m
// -m 100m --memory-swap 200m = 메모리 100m, swap 메모리 100m
docker run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 150m -t 5s -> (fail)
docker run -m 100m stress:latest stress --vm 1 --vm-bytes 90m -t 5s -> (fail)
컨테이너를 OOM-Killer 로 부터 보호
OOM-Killer disable 설정.
$docker run -d -m 100M --name v4 --oom-kill-disable=true nginx
$cat /sys/fs/cgroup/memory/docker/컨테이너ID/memory.oom_control
[CPU 리소스 제한]
CPU 개수를 제한하여 컨테이너를 실행.
$ docker run --cpuset-cpus 1 --name c1 -d stress stress --cpu 1
$ htop
$ docker run --cpuset-cpus 0 --name c2 -d stress stress --cpu 1
$ htop
$ docker rm c1
[Block I/O 제한]
컨테이너에서 --device-write-iops를 적용해서 write 속도의 초당 quota를 제한해서 I/O write를 발생시킨다.
$ docker run -it --rm --device-write-iops /dev/sda:10 ubuntu:latest /bin/bash
/# dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct
다음 write quota를 100으로 변경 후 같은 작업을 반복한다.
$ docker run -it --rm --deivce-write-iops /dev/sda:100 ubuntu:latest /bin/bash
/# dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct
Quota가 100인 컨테이너에서의 작업이 훨씬 빠른 것을 확인할 수 있다.
[cAdvisor 설치]
: 컨테이너 모니터링 툴 cAdvisor. 컨테이너 리소스 분석.
https://github.com/google/cadvisor
(1) cAdvisor 설치
: Docker Host에서 아래 진행.
Quick Start |
VERSION=v0.36.0 # use the latest release version from https://github.com/google/cadvisor/releases sudo docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --volume=/dev/disk/:/dev/disk:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ --privileged \ --device=/dev/kmsg \ gcr.io/cadvisor/cadvisor:$VERSION |
(2) 접속 및 사용
http://[ip]:8080/ 로 접속
※ 이성미, [따배도] 도커 시리즈 , TTABAE-LEARN,https://www.youtube.com/watch?v=TM3DvwwvsLg, 2021-09-10
'Docker > 실습' 카테고리의 다른 글
[Docker-실습] 9.Container Network (0) | 2021.11.15 |
---|---|
[Docker-실습] 8.Container Storage (0) | 2021.10.13 |
[Docker-실습] 6.Container 운영 (0) | 2021.08.27 |
[Docker-실습] 5.Container Registry (0) | 2021.08.23 |
[Docker-실습] 4.Container 만들기(2) (2) | 2021.08.11 |