VM vs Docker 웹서버 성능테스트

SYSTEM/TECH / /
반응형

Docker(도커) VM 차이점

 

 

  • 테스트 사양 및 조건

           VM : Ubuntu 14.04

           Docker : CoreOS 899.5.0 + Docker 1.9.1

  • 공통 사항 

          테스트 Tool : jmeter (웹 성능 측정 자바기반 오픈 소스),  ab(아파치 웹성능 측정 오픈소스), nmon (IBM 오픈소스)

 

          사양 : CPU 4 Core , Memory 4G , Nutanix 동일 호스트(노드)

 

          Nginx 1.9.11 :  worker_process 1 , worker_connections 1024 (튜닝 하지 않은 default 값)

 

          호출 페이지 : 홈페이지 xx.html(164KB)  (실제 운영 웹 서비스 테스트에서는 다소 차이가 있을수 있음)

 

 

조건 : jmeter로 테스트 -> 동시접속자 각 100명, 1000명 / 2초 간격 / 5분 동안 웹서버에 요청(부하 테스트) 

(동시접속 10,000명 일때는 -> 20초 내외에서 PC(java)가 heap dump -> Down (heap size 조절해도 동일)

 

 

시간 Ramp-Up
(Threads 생성 간격)
횟수 Docker VM
평균 TPS PeaK TPS 요청 수 평균Latency  Peak
Latency 
오류 수 평균 TPS Peak TPS 요청 수 평균Latency  Peak
Latency 
오류 수
300초 100명 / 2초 1차 1251 1718 377891 46 13347 0 1351 1736 411579 53 13165 0
300초 100명 / 2초 2차 1251 1741 376743 45 13178 0 1343 1744 408649 52 13047 0
평균 1251 1729.5 377317 45.5 13262.5 0 1347 1740 410114 52.5 13106 0
  
300초 1000명/2초 1차 1347 1887 411439 364 324009 0 1363 1829 414039 343 352593 0
300초 1000명/2초 2차 1347 1942 410899 378 320819 0 1363 1884 416899 348 319828 0
평균 1347 1914.5 411169 371 322414 0 1363 1856.5 415469 345.5 336211 0
 결과 : TPS (초당 트랜잭션 처리수)는 VM > Docker 보다 조금 높음
           Latency (지연율 ms)는 Docker > VM 보다 조금 높음
           결론은 5분 동안 지속적으로 동시 커넥션 요청시 Nginx 웹서버의 성능에는 큰 차이는 없어보임

 

 

  • 아래는 순서대로 Docker, VM 위 항목 테스트시 TPS(초당 트랜잭션 처리수 : 클라이언트가 웹서버에 요청시 응답을 받을때까지의 1 cycle)  추이
    결과적으로 시간이 지남에 따라 TPS 추이는 둘다 감소하나 수치상으로 큰차이는 없음

 *Docker 기반  : 1000명 5분동안 2초간격으로 지속적으로 테스트시 TPS 그래프

 

 

 

*VM 기반 : 1000명 5분동안 2초간격으로 지속적으로 테스트시 TPS 그래프

 

 

 

 2. 1번 테스트시 서버 성능 측정  (CPU는 VM 측정)           

 
시간 Ramp-Up 횟수 Docker VM
CPU Peak Memory Network
eth0
I/O Latency CPU Peak Memory Network
eth0
Disk I/O Latency
300초 100명 / 2초 1차 12.96 변화미미 81M 9.16 5.8 변화미미 78M 7.7
300초 100명 / 2초 2차 13.28 변화미미 83M 7.29 5.7 변화미미 79M 8.5
평균 13.12 변화미미 82M 8.225 5.75 변화미미 78.5M 8.1
300초 1000명/2초 1차 20.46 변화미미 97M 10.58 10.2 변화미미 97M 9.12
300초 1000명/2초 2차 20.11 변화미미 98M 9.96 10.8 변화미미 96M 7.56
평균 20.285 변화미미 97.5M 10.27 10.5 변화미미 96.5M 8.34
 결과 : 모든 리소스 사용량은 비슷하나 Docker 일때  CPU 2배 정도 높게 나옴

 

 

 

 3. ab 성능 측정 툴로 테스트  

 
총 요청수 동시 요청 횟수 Docker VM
처리시간 초당
처리량
에러 처리시간 초당
처리량
에러
10000 100 2회 5.6 1778 0 5.4 1844 0
10000 100 5.6 1771 0 5.4 1843 0
10000 500 2회 6.1 1624 0 5.9 1681 0
10000 500 5.7 1751 0 6 1643 0
10000 1000 2회 7 1426 0 7.4 1346 0
10000 1000 6.4 1550 0 8.5 1172 0
                 
   동시 접속 500명까지는 근소한 차이로 Docker < VM 이 처리 성능이 앞서지만,
   동시 접속 1000명 이상일때는 Docker가 > VM 일때 보다 성능 수치가 높음.       

 

 

- 전체적으로 Docker , VM 에서의 nginx 성능 측정을 동일 조건에서 해보았으나,

   비교적 크게 차이가 나는 부분은 없음.

 

 

결론 : Docker 컨테이너 기반으로 대용량 웹 서비스 운영시 서버 리소스 성능이나

        Nginx 웹서버 성능에 크게 무리는 없을것으로 판단됨. 

 

  도커와 VM 의 성능비교를 통하여 차이점을 알아 보았다.

  동시접속자수를 계산하여 서버당 Nginx 파라메터, 리소스(cpu,memory등) 튜닝 필요

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기