- 특정 웹사이트의 웹서버 단에서 처리되는 html 및 image 파일 호출하는 시나리오 작성
- Linux (CentOS), CPU 1 Core, 2GB Memory
- Apache 웹서버 2.2.26
- NginX 1.4.5
- 결과의 신뢰성을 높이기 위하여
1) 동일 조건으로 각각 7회씩 부하 (2차 테스트 때는 각각 5회)
2) 모든 테스트 이후에는 서버 리부팅하여 관련 자원 초기화
< 40분(2400초) 동안, 3초에 2명씩 Ramp-Up 하며 부하 투입 >
- Apache 웹서버 : MaxClients 5120
- Nginx : worker_processes 1, worker_connections 5120
부하시간 | Ramp-Up | 횟수 | Apache 웹서버 | NginX | ||||||||
평균 TPS | Peak TPS |
요청 수 | 오류 수 | 사용 메모리(KB) |
평균 TPS | Peak TPS |
요청 수 | 오류 수 | 사용 메모리(KB) |
|||
2400초 | 2명 / 3초 | 1차 | 137.4 | 301.0 | 327,792 | 148 | 302,188 | 138.8 | 389.0 | 330,746 | 43 | 157,292 |
2400초 | 2명 / 3초 | 2차 | 138.4 | 366.5 | 330,221 | 301 | 303,744 | 138.1 | 389.0 | 329,730 | 79 | 155,440 |
2400초 | 2명 / 3초 | 3차 | 139.0 | 342.5 | 331,189 | 16 | 324,476 | 138.1 | 366.5 | 329,252 | 57 | 156,300 |
2400초 | 2명 / 3초 | 4차 | 137.9 | 360.0 | 328,294 | 557 | 322,292 | 139.1 | 364.5 | 331,298 | 289 | 161,772 |
2400초 | 2명 / 3초 | 5차 | 139.3 | 335.5 | 332,177 | 161 | 323,644 | 138.0 | 357.5 | 328,906 | 60 | 157,548 |
2400초 | 2명 / 3초 | 6차 | 137.0 | 396.0 | 326,818 | 767 | 328,276 | 138.6 | 388.0 | 330,706 | 93 | 156,184 |
2400초 | 2명 / 3초 | 7차 | 137.8 | 315.5 | 328,624 | 13 | 302,436 | 138.9 | 418.0 | 331,346 | 116 | 157,936 |
TPS 의 경우 크게 차이는 느끼지 못하겠습니다.
그러나 동일 request 처리를 위하여 OS 상에서 소모하고 있는 메모리의 량은 NginX 가 절반 수준입니다.
위의 <사용 메모리(KB)> 라고 표현한 부분을 다시 한번 설명드리면,
최초 프로세스 기동시점 기준으로 최종 부하 투하 시점의 메모리 사용량, 즉 델타값입니다.
제가 테스트 한 서버 (메모리 2G) 기준으로, 평균적으로
- Apache 웹서버는 기동 후 부하를 전혀 넣지 않은 상태에서 1.7G 정도 여유 메모리가 있었고
최종 부하 시점에는 대략 1.42G 정도 남았습니다. - Nginx 는 기동 후 부하를 전혀 넣지 않은 상태에서 1.73G 정도 여유 메모리가 있었고
최종 부하 시점에는 대략 1.58G 정도 남았습니다.
즉, 테스트 결과에는 반영되어 있지 않지만 전혀 부하가 없는 상태의 기동 시점에서도
NginX 가 메모리를 약 0.3G 정도 덜 사용한다는 것입니다.
이제 CPU 사용률 올라갑니다.
1) Apache 웹서버
2) NginX
그래프를 봐서는 언뜻 비교가 어려워 보이기도 하는데요,
사실 Apache 는 테스트 시작 31분 정도부터 간간히 CPU 100% 를 치게 되었고,
34분 정도부터는 그냥 계속 100% 가 되었습니다.
그러나 NginX 는 테스트 마지막에 부하가 최고에 달할 때에도
CPU 90%~100% 사이에 머물면서 아주 가끔 100% 를 쳤을 뿐입니다.
메모리에 이어 CPU 도 NginX 의 승리입니다.
마지막으로 몽상가님이 요청하신 TPS 추이를 올려드립니다.
모든 테스트에 대해 다 올리기는 뭐해서 각각 1,3,5번째 테스트에 대한, 부하툴에서 캡춰한 그래프입니다.
1) Apache 웹서버
2) NginX
그래프들이 어떠한 의미를 주는지 각자 해석할 수 있는 기회를 드리겠습니다.
폐업을 고민하기도 했던 얼렁뚱땅 연구소는 Apache 웹세버와 Nginx 의 진실을 밝히기 위하여
다시 한번 달려볼 것을 맹세합니다.