카테고리 없음

컨테이너 부하 테스트

Dexlee 2021. 11. 10. 20:38

1. stress container 생성

  • 컨테이너 빌드 : 부하 테스트 프로그램 stress를 설치하고 동작시키는 컨테이너 빌드
  • stress --cpu 2
    • CPU 부하테스트 : 2개 cpu core를 100% 사용하도록 부하 발생
  • stress --vm 2 --vm-bytes <사용할 크기>
    • 메모리 부하 테스트 : 프로세스 수 2개와 사용할 메모리만큼 부하 발생

1) vi dockerfile

FROM ubuntu

RUN apt-get update; apt-get install stress -y

CMD [“/bin/sh”, “-c”, “stress -c 2”]

 

2. 메모리 리소스 제한

  • docker run -m 100m  --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 90m -t 5s
  • docker run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 150m -t 5s
    • 100m 이상이므로, 견디질 못함.

 

3. OOM-Killer(Out-Of-Memory)

  • 메모리가 부족하면 프로세스를 죽인다.
  • docker run -d -m 100M --name m4 --oom-kill-disable=true nginx
    • 테스트를 위해
  • docker inspect m4
    • m4 container에 대한 모든 정보를 확인 가능

 

4. CPU 리소스 제한

  • docker run --cpuset-cpus 1 --name c1 -d stress:latest stress --cpu 1
    • cpu 2번만 작동시킴.
  • docker run --cpuset-cpus 0-1 --name c2 -d stress:latest stress --cpu 1
  • cpu 1,2번 중 랜덤으로 작동시킴.

 

5. cpu 리소스 할당

  • cpu 상대적 가중치를 할당
  • docker run -c 2048 --name cload1 -d stress:latest
  • docker run --name cload2 -d stress:latest
    • default -c 1024
  • docker run -c 512 --name cload3 -d stress:latest
  • docker run -c 512 --name cload4 -d stress:latest

6. Block I/O 제한

  • --device-write-iops를 적용해서 write속도의 초당 quota를 제한해서 IO write를 발생시킴.
  • lsblk
    • 리눅스 디바이스 정보 출력하는 명령어
    • 이 명령어로 xvda or vda 인지 이름 확인
  • docker run -it --rm --device-write-iops /dev/vda:10 ubuntu:latest /bin/bash
  • dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct
    • i/o 부하 걸기
    • after i/o,
    • 10485760 bytes (10 MB, 10 MiB) copied, 0.908064 s, 11.5 MB/s
  • docker run -it --rm --device-write-iops /dev/vda:100 ubuntu:latest /bin/bash
    • after i/o
    • 10485760 bytes (10 MB, 10 MiB) copied, 0.005499 s, 1.9 GB/s
  • 쿼터 크기(10-100)가 10배가 더 크니 속도 차이가 엄청 커진다.