이제 실제 서버에서 테스트를 돌려보자. 저번에는 로컬에서 실행하였다.
테스트를 돌려보기전에 처음이라 서버 비용이 걱정된다 ㅠㅅㅠ.
"phases": [
{
"duration": 60,
"arrivalRate": 10
}
],
먼저 컨테이너 하나로 초당 100개씩 60초 동안 요청을 보내보자.
해당 결과이다. 생각보다 빠르게 나온것같다.
p95
와 p99
의 값이 둘다 0.2초 내외로 초당 100개의 요청은 아직까지는 거뜬 없는 것 같다.
"phases": [
{
"duration": 60,
"arrivalRate": 20
}
],
컨테이너 하나로 초당 200개씩 60초 동안 요청을 보내 보자.
p95
와 p99
가 1.5초 정도로 아직까진 버틸만 하지만 그래도 성능이 매우 느려진 것을 확인할 수 있다.
Nginx + Docker로 Load Balancing하기
이제 컨테이너를 여러개 띄워서 nginx
로 Load Balancing
을 적용하여 테스트를 시행해보자.
5개의 컨테이너를 띄워서 요청을 보냈는데. 1개의 컨테이너를 가동했을 때보다 더 느려진 것을 확인할 수 있다. 테스트 변수를 잘못 작성한줄 알고 다시 해봤는데 결과는 비슷했다. ㅠ
top
명령어로 cpu사용량을 확인해보니 각각의 컨테이너가 cpu를 30%씩 잡아먹고 있었다. cpu를 서로 30%씩 차지하려고 하니 Context Switching
이 일어나서 오히려 더 늦어진 것이라고 생각이 든다. 이건 나의 서버가 2코어 4GB이기 때문에 서버 스펙의 문제라고 생각이 들었다.
이 테스트로 로드밸런싱을 적용하여 컨테이너 개수를 늘린다고 무조건 속도가 빨라지는 것은 아니라는 것을 깨달았다. 적당한 컨테이너 개수를 찾아보자.
컨테이너 3개로 실험하였다. 컨테이너 5개로 테스트를 한 것 보단 조금 시간이 줄었지만 여전히 컨테이너를 한개 사용하는 것보다 오래 걸린 것을 확인할 수 있다.
서버 비용이 대학생인 나에게 아직 비싸 서버의 스펙을 늘릴 수 없으니, 컨테이너 1~2개로 로드밸런싱을 하는 것이 적당하다고 생각이 들었다.
Load Balancing으로 컨테이너 개수를 늘린다고, 무조건 응답이 빨라지는 건 아니구나.