Docker - Stress Test
부하 테스트
부하 테스트 프로그램인 stress
를 통하여 cpu와 메모리 부하테스트를 실행할 수 있다.
CPU 부하테스트
- 특정 CPU core를 100%를 사용하도록 부하를 발생시킨다
stress --cpu 2
: 2개 cpu를 100% 사용한다.
메모리 부하테스트
- 프로세스 수와 설정한 메모리만큼의 부하를 발생시킨다.
stress --vm 2 --vm-bytes 150m
: 2개 프로세스를 150MB로 실행
메모리 100m를 할당하고 90m의 부하를 발생시켰을 때는 성공적으로 작동하지만, 100m를 할당하고 150m의 부하를 주었을 때는 OOM(Out Of Memory) killer를 통해 프로세스가 바로 kill된다.
1 | docker run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 90m -t 5s |
OOM disable
--oom-kill-disable=true
속성을 통해 Out Of Memory가 발생했을 때 컨테이너가 kill되는 것을 방지할 수 있다.
확인하는 방법에는 아래와 같이 2가지가 있다.
1. docker inspect
docker inspect
를 통해 컨테이너 속성을 확인해보면 아래와 같다.
- memory는 100MB
- swap-memory는 설정하지 않았기 때문에 200MB (default=memory의 2배)
- OomKillDisable : true
$ docker run -d -m 100m --name m4 --oom-kill-disable=true nginx
$ docker inspect m4
1
2
3
4
5
6
7
8
9
#### 2. cgroup
실제 resource는 `cgroup-memory-doker-containerID` 디렉토리에 설정해준다.
아래 코드를 통해 확인해보면 `oom_kill_disable 1`이 설정되어있는 것을 확인할 수 있다.
```shell
cat /sys/fs/cgroup/memory/docker/[containerId]/memory.oom_control
Docker - Stress Test
You need to set
install_url
to use ShareThis. Please set it in _config.yml
.