테스트 환경
- 특정 웹사이트의 웹서버 단에서 처리되는 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 의 오류가 현저히 줄었습니다.
일단 이번 테스트는 여기까지만 진행합니다.
결론이 없긴 한데요, 다음 테스트 때 검증할 몇가지 요소 식별 및 교훈은 얻은 것 같습니다.