테스트 환경

- 특정 웹사이트의 웹서버 단에서 처리되는 html 및 image 파일 호출하는 시나리오 작성

- Linux (CentOS), CPU 1 Core, 2GB Memory

- Apache 웹서버 2.2.26

- Nginx 1.4.5

- 결과의 신뢰성을 높이기 위하여 동일 조건으로 각각 3회씩 부하

 

1. 10분(600초) 동안, 5초에 2명씩 Ramp-Up 하며 부하 투입

  • Apache 웹서버 : MaxClients 1024
  • Nginx : worker_processes 1, worker_connections 1024
부하시간 Ramp-Up 횟수 Apache 웹서버 NginX
평균 TPS PeaK TPS 요청 수 오류 수 평균 TPS Peak TPS 요청 수 오류 수
600초 2명 / 5초 1차 27.4 64 15,982 0 27.4 59.5 16,018 0
600초 2명 / 5초 2차 27.4 57.5 16,033 0 27.4 59.5 16,038 0
600초 2명 / 5초 3차 27.3 57.5 15,976 0 27.4 60.5 15,981 0

 

뭔가 차이점이 보이면 그래프라도 넣어볼까 했는데, 크게 차이가 나지 않아 skip 합니다.

다음 테스트는 Ramp-Up 주기를 당겨봅니다.

 

2. 10분(600초) 동안, 3초에 2명씩 Ramp-Up 하며 부하 투입

  • Apache 웹서버 : MaxClients 1024
  • Nginx : worker_processes 1, worker_connections 1024
부하시간 Ramp-Up 횟수 Apache 웹서버 NginX
평균 TPS PeaK TPS 요청 수 오류 수 평균 TPS Peak TPS 요청 수 오류 수
600초 2명 / 3초 1차 45.5 97 26,690 0 45.4 100.5 26,612 0
600초 2명 / 3초 2차 45.7 101 26,892 0 45.4 92.5 26,612 0
600초 2명 / 3초 3차 45.6 98.5 26,731 0 45.5 98.5 26,785 0

 

역시 아직 둘을 구별하기 힘듭니다. 다음 테스트는 부하 시간을 늘려봅니다.

 

3. 30분(1800초) 동안, 3초에 2명씩 Ramp-Up 하며 부하 투입

  • Apache 웹서버 : MaxClients 1024
  • Nginx : worker_processes 1, worker_connections 1024
부하시간 Ramp-Up 횟수 Apache 웹서버 NginX
평균 TPS PeaK TPS 요청 수 오류 수 평균 TPS Peak TPS 요청 수 오류 수
1800초 2명 / 3초 1차 114.1 315 203,727 1,839 112.4 350 200,803 17,534
1800초 2명 / 3초 2차 114.8 289.5 204,906 1,344 111.7 334.5 198,867 16,228
1800초 2명 / 3초 3차 115.1 356.5 205,390 1,530 111.8 360 199,545 15,944

 

근소하게 성능에서 Apache 웹서버가 앞서는 것 같습니다.

오류 수도 10개 가량 NginX 가 많습니다. 로그를 보니 500 코드로 응답한 요청들이 꽤 됩니다.

다음에는 일하는 녀석들을 늘려봅니다.

 

4. 30분(1800초) 동안, 3초에 2명씩 Ramp-Up 하며 부하 투입

  • Apache 웹서버 : MaxClients 2048
  • Nginx : worker_processes 2, worker_connections 1024
부하시간 Ramp-Up 횟수 Apache 웹서버 NginX
평균 TPS PeaK TPS 요청 수 오류 수 평균 TPS Peak TPS 요청 수 오류 수
1800초 2명 / 3초 1차 115.1 342.5 205,269 1,709 115.2 260.5 205,499 63
1800초 2명 / 3초 2차 115.3 316.5 205,861 1,612 115.5 277.5 206,151 0
1800초 2명 / 3초 3차 115.4 274 205,985 1,354 114.9 331 204,805 2

 

앞선 테스트와 큰 차이는 없지만 

Worker 를 하나 더 늘렸더니 NginX 의 오류가 현저히 줄었습니다.

 

일단 이번 테스트는 여기까지만 진행합니다.

결론이 없긴 한데요, 다음 테스트 때 검증할 몇가지 요소 식별 및 교훈은 얻은 것 같습니다.