RadarURL
Skip to content
조회 수 3692 추천 수 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
번호 제목 글쓴이 날짜 조회 수
21 NGXMP 16.0 버전에서 Log에 upstream timed out (10060: 연결된 구성원으로부터 응답이 없어 연결하지 못했거나, 호스트로부터 응답이 없어 연결이 끊어졌습니다) while connecting to upstream, upstream: "fastcgi://127.0.0.1:9000" JaeSoo 2014.04.11 2948
20 504 Gateway Time-out using Nginx JaeSoo 2014.04.09 1835
19 Nginx, FastCGI 지시어 및 설명 (504 Gateway Time-out 관련 설정 등) JaeSoo 2014.04.09 2389
18 Nginx Log에서 upstream timed out (110: Connection timed out) while reading response header from upstream JaeSoo 2014.04.07 1914
17 nginx 504 gateway time-out JaeSoo 2014.04.07 1571
16 Nginx SERverSETting JaeSoo 2014.04.07 1680
15 Nginx에서 php 외에 추가로 여러 확장자를 처리 방법 JAESOO 2013.06.10 3024
14 Nginx 설치 (간략) JAESOO 2013.06.10 1718
» Apache vs Nginx 성능을 밝혀라! JAESOO 2013.05.28 3692
12 아파치 2.4는 러시안 강호 NGINX를 넘을 수 있는가? JAESOO 2013.05.28 2834
11 nginx 재시작 배치파일 JaeSoo 2013.04.11 3264
10 NGINX서버를 통한 다운로드 링크 형성하기(POGOPLUG SERIES 4용) JaeSoo 2013.04.08 5464
9 nginx 에서 htaccess 사용하기 JaeSoo 2013.04.08 2967
8 Nginx HttpRewriteModule JaeSoo 2013.04.07 2820
7 Nginx 와 Apache 동시사용 설정 (영문) JaeSoo 2013.04.07 9033
6 Xpress engine nginx rewrite 설정, 짧은주소 (xpressengine) JaeSoo 2012.11.20 56953
5 NGINX 소개와 사용 현황 JaeSoo 2012.11.19 4886
4 강력한 웹서버 NGINX JaeSoo 2012.11.19 5117
3 Nginx 웹서버 성능분석 JaeSoo 2012.11.19 5929
2 제로보드XE(Xpressengine) Anti-accessXE:기본설정 JaeSoo 2012.07.26 3929
Board Pagination Prev 1 2 Next
/ 2

PageViews   Today : 187   Yesterday : 1,052   Total : 19,718,545  /  Counter Status   Today : 48   Yesterday : 294   Total : 1,395,987
Site Info   Member : 230  /  Total documents : 1,221   New documents : 0  /  Total comments : 24

Edited by JAESOO

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소