1.컨테이너 리소스 제한
stress container 생성
CPU 부하테스트: 2개 CPU core를 100% 사용하도록 부하 발생: stree --cpu 2
메모리 부하테스트: 프로세스 수 2개와 사용할 메모리만큼 부하 발생:stress --vm 2 --vm-bytes <사용할 크기>
vi Dockerfile 생성 후
FROM debian
MAINTAINER Seunghan Lee <seunghan96@naver.com>
RUN apt-get update; apt-get install stress -y
CMD ["/bin/sh", "-c", "stress -c 2"]
해당코드를 삽입후 docker build . -t stress 명령어를 입력한다.image 파일이 생김
REPOSITORY TAG IMAGE ID CREATED SIZE
stress latest 6b2f2332f8e2 56 seconds ago 143MB
mysql latest 8189e588b0e8 3 days ago 564MB
kimminwoo1234/webserver v1 09b848442d5b 10 days ago 204MB
webserver v1 09b848442d5b 10 days ago 204MB
hellojs latest 50dd87d32f95 10 days ago 918MB
httpd latest dc1a95e13784 2 weeks ago 145MB
localhost:5000/httpd latest dc1a95e13784 2 weeks ago 145MB
registry 2 8db46f9d7550 3 weeks ago 24.2MB
nginx latest 080ed0ed8312 3 weeks ago 142MB
docker run -m 100m --memory-swap 200m stress:latest stress --vm 1 --vm-bytes 90m -t 5s
5초동안 90메가바이트의 부하를 일으킴
결과:
stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: info: [1] successful run completed in 5s
docker run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 150m -t 5s
결과:
ubuntu@ip-172-31-45-232:~$ docker run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 150m -t 5s
stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: FAIL: [1] (415) <-- worker 7 got signal 9
stress: WARN: [1] (417) now reaping child worker processes
stress: FAIL: [1] (421) kill error: No such process
stress: FAIL: [1] (451) failed run completed in 0s
스왑 메모리 생략할 경우?
default는 “메모리의 2배” ( 100x2 = 200 MB )
따라서 정상 작동한다
OOM-killer
docker run -d -m 100M --name m4 --oom-kill-disable=true nginx리눅스는 메모리가 부족하게 되면 OOM killer가 동작되어 프로세스가 작동되지만 이를 꺼준다
이거 왜 오류뜨는걸까 ... 스터디 하시는분들중에 aws ec2로 환경 사용하시는 분들에게 여쭤봐야겠다.
ubuntu@ip-172-31-45-232:~$ docker run -d -m 100M --name m4 --oom-kill-disable=true nginx
WARNING: Your kernel does not support OomKillDisable. OomKillDisable discarded.
메모리제한
docker run --cpuset-cpus 1 --name c1 -d stress:latest stress --cpu 1
1번 cpu를 작동시키라는 의미
2.컨테이너 모니터링하기
# apt-get install htop
htop
- (line 2) htop을 사용하여 확인
docker run -c 2048 --name cload1 -d stress:latest
docker run --name cload2 -d stress:latest
docker run -c 512 --name cload3 -d stress:latest
순서대로 2배/1배/0.5배 만큼 cpu 사용
docker stats cload1 cload1 에 대한 리소스 사용통계량을 실시간으로 확인가능(
STATISTICS통계 약자)
c99ce483b732 cload1 0.44% 792KiB / 965.8MiB 0.08% 726B / 0B 8.19kB / 0B 4
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
c99ce483b732 cload1 0.44% 792KiB / 965.8MiB 0.08% 726B / 0B 8.19kB / 0B 4
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
c99ce483b732 cload1 99.92% 792KiB / 965.8MiB 0.08% 726B / 0B 8.19kB / 0B 4
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
Block I/O 제한
lsblk
ubuntu@ip-172-31-45-232:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 24.4M 1 loop /snap/amazon-ssm-agent/6312
loop1 7:1 0 55.6M 1 loop /snap/core18/2714
loop2 7:2 0 55.6M 1 loop /snap/core18/2721
loop3 7:3 0 63.3M 1 loop /snap/core20/1852
loop4 7:4 0 111.9M 1 loop /snap/lxd/24322
loop5 7:5 0 49.8M 1 loop /snap/snapd/18596
xvda 202:0 0 30G 0 disk
├─xvda1 202:1 0 29.9G 0 part /
├─xvda14 202:14 0 4M 0 part
└─xvda15 202:15 0 106M 0 part /boot/efi
ubuntu@ip-172-31-45-232:~$ docker run -it --rm --device-write-iops /dev/xvda:10 ubuntu:latest /bin/bash
root@00b9e2cd6c42:/# dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 7.90572 s, 1.3 MB/s
docker run -it 를 하게되면 컨테이너에 접속하여 사용할수 있게 됩니다.
/dev/xvda:10 은 IOPS(input output operations per second)한도를 10으로 설정합니다.
dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct 는 무슨의미일까?
file1에 1M짜리 10개를 만들어본다
f=/dev/zero는 입력 파일을 "/dev/zero"로 설정합니다. 이 파일은 무한한 0 바이트 시퀀스를 출력하는 가상 파일입니다.
dd는 데이터를 복사하고 변환하는 유틸리티입니다.
count=10은 10개의 블록을 생성하도록 지정합니다. 따라서 "file1"에는 10MB의 0으로 채워진 데이터가 생성됩니다
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
결과: 당연한 결과겠지만 IO 할당량을 더 늘려줬을 때 더 빠른것으로 나옴
Quota 10
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 7.90572 s, 1.3 MB/s
Quota 100
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.710914 s, 14.7 MB/s
'따배도 스터디' 카테고리의 다른 글
8-2 Docker Container Storage - 실습편 (0) | 2023.04.25 |
---|---|
8-1 Docker Container Storage - 이론편 (0) | 2023.04.25 |
7-1 컨테이너 리소스를 관리해야지 -이론편 (0) | 2023.04.21 |
6-2 Docker 컨테이너 사용하기 -실습편 (0) | 2023.04.21 |
6-1 Docker 컨테이너 사용하기 -이론편 (0) | 2023.04.20 |