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 928100
42 웹서버,WAS http를 https로 리다이렉트하는 여러가지 방법 new JaeSoo 2025.09.10 0
41 웹서버,WAS SSL인증서 없이 HTTPS에서 HTTP로 되돌리기 new JaeSoo 2025.09.10 2
40 웹서버,WAS [SSL] win-acme, Let's encrypt로 무료 SSL 인증서 발급 new JaeSoo 2025.09.10 0
39 웹서버,WAS [SSL] Windows 10에서 Let's Encrypt로 SSL 인증서 무료 발급받기 new JaeSoo 2025.09.10 0
38 웹서버,WAS 무료로 https SSL/TLS 인증서를 발급받을 수 있는 인증 기관 new JaeSoo 2025.09.10 0
37 웹서버,WAS 아파치 서버에 https SSL 인증서 적용하는 방법 (apache httpd) new JaeSoo 2025.09.10 0
36 웹서버,WAS 아파치2(Apache2) SSL HTTPS 적용하기 new JaeSoo 2025.09.10 0
35 웹서버,WAS 아파치 웹서버에 멀티 도메인에 대한 80, 443 포트 설정하는 방법 newfile JaeSoo 2025.09.10 0
34 웹서버,WAS 용량 산정 (동시 접속자 계산) JaeSoo 2016.05.05 1028
33 웹서버,WAS 아파치 httpd.conf 재시작 없이 설정 적용하기 JaeSoo 2016.05.02 646
32 웹서버,WAS Tomcat JVM heap memory set 및 size JaeSoo 2016.03.23 706
31 웹서버,WAS Java 실행 옵션 정리 JaeSoo 2016.03.23 624
30 웹서버,WAS [JAVA] 개발환경설정 - 표준프레임워크 file JaeSoo 2016.01.02 791
29 웹서버,WAS Tomcat 7.x 와 8.x 간의 default configuration 차이 JaeSoo 2016.01.02 717
28 웹서버,WAS 톰캣 8 소개 JaeSoo 2016.01.01 517
27 웹서버,WAS 리눅스 webalizer를 통한 apache log(웹서버 접속 통계) 분석하기 (추천) JaeSoo 2014.12.25 1098
26 웹서버,WAS 리눅스 아파치 로그 뷰어 webalizer, utf-8로 변환하기 file JaeSoo 2014.12.22 880
25 웹서버,WAS Webalizer Configuration – Configure Webalizer for SEO JaeSoo 2014.12.22 1413
24 웹서버,WAS Webalizer, AWStats에서 국가 정보 확인하기 file JaeSoo 2014.12.22 854
23 웹서버,WAS Webalizer에서 국가별 로그 출력하기 file JaeSoo 2014.12.22 1082
Board Pagination Prev 1 2 3 Next
/ 3


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

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

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

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

JServer.kr

제이서버 메타블로그

재수 티스토리


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

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너