- 컨테이너 부하 테스트 프로그램
- stress container 생성
- 컨테이너 빌드 : 부하 테스트 프로그램 stress를 설치하고 동작시키는 컨테이너 빌드
- CPU 부하 테스트 : 2개 cpu core 를 100% 사용하도록 부하 발생
stress --cpu 2 - 메모리 부하 테스트 : 프로세스 수 2개와 사용할 메모리만큼 부하 발생 :
stress --vm 2 --vm-bytes <사용할 크기>
- stress container 생성
- 메모리 리소스 제한 실습
- docker run -m 100m --memory-swap 100m stress:latest --vm 1 --vm-bytes 90m -t 5s
- 최대 100mb 사용 가능, swap 메모리 0mb 사용 가능.
- stress:latest 사용 시, 5초동안 90mb 메모리 부하
- 5초 뒤 작동됨.
- docker run -m 100m --memory-swap 200m stress:latest --vm 1 --vm-bytes 150m -t 5s
- 최대 100mb 사용 가능, swap 메모리 0mb 사용 가능.
- stress:latest 사용 시, 5초동안 150mb 메모리 부하
- 최대 작업양이 부하양보다 적기 때문에 바로 종료됨.(FAIL)
- docker run -m 100m stress:latest --vm 1 --vm-bytes 150m -t 5s
- 최대 100mb 사용 가능, swap 메모리는 생략되어있기 때문에, 200mb 로 지정됨
- stress:latest 사용 시, 5초동안 150mb 메모리 부하
- 5초 대기 후 진행됨
- docker run -d -m 100M --name m4 --oom-kill-disable=true nginx
- nginx 컨테이너는 out of memory killer 가 kill 시키지 못함.
- docker inspect m4 을 통해 oomkillDisable : true 확인
- cat /sys/fs/cgroup/memory/docker/{container ID}/memory.oom_control로 확인
- docker run -m 100m --memory-swap 100m stress:latest --vm 1 --vm-bytes 90m -t 5s
- cpu 리소스 제한 실습
- docker run --cpuset-cpus 1 --name c1 -d stress stress --cpu 1
- cpu 1번에서 stress 컨테이너를 실행함.
- 특정 cpu 코어 1개만 사용하도록 허용함.
- htop 명령어를 통해 1번 cpu 만 사용중인 것을 확인할 수 있음.
- docker run --cpuset-cpus 0-1 --name c2 -d stress stress --cpu 1
- cpu 0 또는 1번에서 stress 컨테이너를 실행하며, 상황에 따라 변경함.
- 특정 cpu 코어 1개만 사용하도록 허용함
- docker run -c [할당량] --name [컨테이너명] -d [컨테이너 이미지:태그]
- 여러개의 컨테이너 실행 및 cpu 할당량 지정
- cload1 : 2048
- cload2 : 1024
- cload3 : 512
- cload4 : 512
- 여러개의 컨테이너 실행 및 cpu 할당량 지정
- docker stats : 컨테이너 별 리소스 사용 체크하기
- docker run --cpuset-cpus 1 --name c1 -d stress stress --cpu 1
- Block I/O 제한 실습
- 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
- --device-write-iops 를 적용하여 write 속도의 초당 quota를 제한하여 IO write를 발생시킴.
- docker run -it --rm --device-write-iops /dev/sda:100 ubuntu:latest /bin/bash
/# dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct- write quota 를 100으로 변경 후 같은 작업을 반복한다.
- write quota 를 100으로 변경 후 같은 작업을 반복한다.
- docker run -it --rm --device-write-iops /dev/sda:10 ubuntu:latest /bin/bash
- cAdvisor 실행
https://github.com/google/cadvisor
- https://github.com/google/cadvisor 해당 부분 터미널에 붙여넣기
- docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' cadvisor : docker host ip 확인하기
- http://{docker host ip}:8080 으로 접속하여 cadvisor 사용 (접속 안됨)
- https://github.com/google/cadvisor 해당 부분 터미널에 붙여넣기
- 문제풀이
- db라는 이름을 가지는 mysql 컨테이너를 다음의 조건으로 실행하시오
- MYSQL_ROOT_PASSWORD:pass
- 물리 메모리 : 200M
- 스왑 메모리 : 300M
- 할당 CPU core 수 : 1
- docker run --name db -e MYSQL_ROOT_PASSWORD=pass -d -p 3306:3306 -m 200m --memory-swap 300m --cpus="1" mysql:latest
- db 컨테이너 리소스 사용량을 docker stat 명령을 통해 확인해보자.
- docker stats db
- docker stats db
- db라는 이름을 가지는 mysql 컨테이너를 다음의 조건으로 실행하시오
'쿠버네티스 > docker' 카테고리의 다른 글
7-2.Docker Container Storage (0) | 2024.05.03 |
---|---|
7-1. Docker Container Storage (1) | 2024.05.01 |
6-1. 컨테이너 관리(하드웨어 리스소 제한 및 컨테이너 모니터링) (1) | 2024.04.30 |
5-2. Docker 컨테이너 사용하기 (0) | 2024.04.30 |
5-1. 컨테이너 사용하기 (0) | 2024.04.29 |