RadarURL

웹서버,WAS
2013.05.28 22:26

Apache vs Nginx 성능을 밝혀라!

조회 수 5992 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

미물의 개발 세상 블로그를 운영하는 "하호진"님의 동의를 얻어 "Apache event_mpm vs Nginx 성능 비교"글을 소개 들입니다. 더 많은 글은 하호진님의 글을 참고하시기 바랍니다. 

 

Aapache 2.4 정식 버전의 event_mpm이 어떤 성능을 발휘하며 성능을 최대치로 올리기 위한 튜닝 정보 및 Nginx와 설정 및 성능 비교를 통해 본 Apache의 현재에 대해서 살펴보고자 한다.

과거 Apache와 Nginx의 성능 비교 자료들을 보면 대부분 Nginx의 성능이 월등하게 나온다는 것을 안다. 하지만, 여기서는 두가지 비교를 통해 최적의 사용 포인트를 개인적으로 짚어보는 의도가 강하다. 한마디로 잘 사용해 보고 싶다.

혹시 많이 사용해 보신분들이 이 글을 보시게되면 좋은 조언 부탁드립니다. 혹시 잘못 표기된 정보가 있으면 댓글로 첨언 부탁드립니다.

 

Apache vs Nginx 테스트 결과
테스트를 위한 설정을 기반으로 성능 테스트를 여러번 진행 한 가운데 최적의 성능을 보여주는 상태가 아래와 같다. 그 기준은 동시 가입자가 늘어도 지속적인 성능을 유지하는 것을 목표로 삼았다.

 

d3f9551c-85ae-41ae-81da-6402e1463cb8.png

 

요약해 보자면 동일 기준으로 정적인 페이지 테스트에서 아직은 Nginx의 성능이 많이 앞선다. 나름 Apache의 성능 저하 원인으로는 아마도 strace를 살펴본 결과 futex에서의 waiting이 자주 발생하는 것으로 보아서 아직 성숙단계가 아닌 것처럼 보인다. 그래서 Nginx만큼 성능이 못나온 것으로 보인다.

하지만, 용도에 맞추다보니 굳이 Apache를 사용하기를 고집한다면 prefork나 worker보다는 event 방식도 사용해 볼 가치가 있다.

 

Apache 에서 StartServers (Min|Max) SpareServers, MaxClients 같게 구성

트래픽이 많은 곳에서 참고할만한 구성으로 Apache의 운영시의 라이프사이클을 설정 정보와 함께 이해하기 쉽도록 매핑한 결과이다.

 

02354703-ec34-4d10-83c4-5d2c85f2c5c6.png


StartServers (Min| Max) SpareServers, MaxClients가 같은 값의 경우 프로세스 수가 고정되므로, MinSpareServers을 위해서만 필요 이상으로 fork할 것도 없고, MaxSpareServers에 의해 남은 프로세스를 KILL 할 필요도 없다. 특히 EC2(Xen)와 같은 클라우드에서 서버를 운영한다면 fork비용이 바싸서 성능 저하요인을 줄일 수 있을거같다.


그리고 CPU는 사용하지 않지만, IDLE 프로세스가 많아지면 메모리가 증가할 것이라고 생각할 수 있지만, CoW(Copy On Write)가 있기 때문에 메모리가 많이 소요되는 건 아니다. 

 

*. Copy On Write 개념
Linux는 fork로 자식 프로세스를 생성한 경우, 부모의 가상 메모리 공간의 내용을 자식에 복사해야 한다. 그러나 제대로 한다고 전체 공간을 복사하는 것은 fork의 비용이 높아지고, 자식이 부모와 같은 프로세스로 실행이 계속되면 내용이 중복된 페이지가 많아져 효율이 좋지 않아진다.


그래서 Linux의 가상 메모리는 메모리 공간 전체를 복사하는 것이 아니라, 처음에는 부모와 자식으로 메모리 공간을 공유하고 있고 쓰기가 일어나는 시점에 쓰기가 일어난 페이지만 새로운 페이지에 복사해서 개별적으로 가져가는 구조로 이 문제를 해결한다. 이것이 Copy-On-Write(CoW)라는 전략이다.

 

결론적으로 여러 튜닝등을 통해서 아파치 성능으 올렸지만, 특정한 상황에서의 단순한 웹서버 성능은 Nginx가 앞선다고 하호진님께서 평가하셨다. 다만, 특정한 상황에서의 테스팅 결과인 만큼 이를 이해 할 필요는 있을 것 같다.

 

출처 : http://www.iamday.net/apps/article/talk/2367/view.iamday

TAG •
?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 928120
16 웹서버,WAS 리눅스 webalizer를 통한 apache log(웹서버 접속 통계) 분석하기 (추천) JaeSoo 2014.12.25 1098
15 웹서버,WAS Webalizer에서 국가별 로그 출력하기 file JaeSoo 2014.12.22 1082
14 웹서버,WAS Apache: A good Webalizer.conf for the Webalizer Apache Log Analyzer utility file JaeSoo 2014.12.22 1234
13 유닉스/리눅스 Apache 실행환경을 nobody 사용자로 변경 JaeSoo 2014.05.28 1616
12 웹서버,WAS Apache 서버에서 확장자 .htm 파일 내의 php 코드가 실행되지 않는 문제 해결 방법 JaeSoo 2014.05.26 2171
11 유닉스/리눅스 Apache 파일시스템 권한 설정 JaeSoo 2014.05.26 1621
10 유닉스/리눅스 Apache HTTP Server, Rewrite가 안되는 경우 JaeSoo 2014.05.26 1680
9 웹서버,WAS Apache Struts 버전 확인 방법 JaeSoo 2014.05.09 1998
» 웹서버,WAS Apache vs Nginx 성능을 밝혀라! file JaeSoo 2013.05.28 5992
7 웹서버,WAS 아파치 2.4는 러시안 강호 NGINX를 넘을 수 있는가? file JaeSoo 2013.05.28 4428
6 웹 프로그래밍 apache용 ewrite rule (htaccess)을 nginx rewrite rule로 변환 JaeSoo 2013.04.06 4798
5 유닉스/리눅스 Apache/FastCGI JaeSoo 2013.03.08 7267
4 웹 프로그래밍 SSL 운영(https)시 도메인기반 Virtual host가 안되는 이유 file JaeSoo 2013.03.01 3653
3 웹 프로그래밍 [Fedora9] Apache & PHP 설치 JaeSoo 2012.12.06 3665
2 웹 프로그래밍 강력한 웹서버 NGINX JaeSoo 2012.11.20 5067
1 웹 프로그래밍 [제로보드XE] 각 사용자디렉토리에서 mod_rewrite 적용하기 file JaeSoo 2012.08.18 4399
Board Pagination Prev 1 Next
/ 1


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너