포럼
PHP 버전에 따른 XE 성능 비교
2015.05.28 14:01
간혹 XE가 느리다는 글이 올라오면 PHP 업그레이드부터 하라는 댓글이 달리곤 하죠. 그런데 과연 PHP 버전과 XE의 성능에는 어떤 관계가 있을까요? 막연한 추측이나 체감속도가 아니라 객관적인 수치를 구해 보겠습니다.
테스트 환경
Digital Ocean 8GB짜리 클라우드 서버를 사용했습니다.
CPU 코어 4개, SSD, 64비트 환경입니다.
1-1. CentOS 5.10 + Apache 2.2.3 + PHP 5.2.17
1-2. 위와 같으나 APC 모듈 설치
2-1. Debian 6.0 + Apache 2.2.15 + PHP 5.3.3
2-2. 위와 같으나 APC 모듈 설치
3-1. Debian 7.0 + Apache 2.2.22 + PHP 5.4.39
3-2. 위와 같으나 APC 모듈 설치
4-1. Debian 7.0 + Apache 2.2.22 + PHP 5.5.25 (via dotdeb.org)
4-2. 위와 같으나 아파치 대신 nginx 1.8.0 + PHP-FPM 사용
5-1. Debian 7.0 + Apache 2.2.22 + PHP 5.6.9 (via dotdeb.org)
5-2. 위와 같으나 아파치 대신 nginx 1.8.0 + PHP-FPM 사용
6. Debian 7.0 + nginx 1.8.0 + HHVM 3.7.0
각각의 PHP 버전을 가장 쉽게 설치할 방법을 찾다 보니 O/S 종류와 버전, 아파치 버전에는 차이가 있음을 양해 바랍니다. 현재 Digital Ocean에서 지원하는 O/S 종류와 버전들 중 PHP 5.2 설치가 가능한 것은 CentOS 5.10밖에 없는 것 같네요. 나머지는 제가 가장 좋아하는 Debian을 사용했습니다.
DB는 모든 테스트에서 MariaDB 10.0를 사용했고, XE에서는 mysqli_innodb 방식을 선택했습니다. InnoDB 튜닝 설정은 모든 테스트에서 동일합니다.
테스트에 사용한 XE 버전은 1.8.2입니다. 단, PHP 5.2 테스트를 위해 소스를 일부 수정했습니다. PHP 5.2 테스트에 1.7.13을 사용하려고도 해 보았으나, 기본 레이아웃이 너무 달라서 비교가 무의미하더군요.
테스트 방법
각각의 환경에서 XE를 새로 설치한 후, 메인화면을 반복 요청합니다. 동접수 10으로 총 1천 번 요청한 후, 초당 요청수와 평균 페이지 로딩시간을 측정합니다.
ab -c 10 -n 1000 -k http://localhost/xe-core/
클라우드 서버이므로 성능이 일정하지 않을 수 있습니다. 그래서 시간차를 두고 여러 번 테스트한 후, 가장 빠른 결과를 사용했습니다.
테스트 결과
test setup req/s time(ms)
5.2.17 27.60 362.24
5.2.17 + APC 108.93 91.79
5.3.3 26.83 372.66
5.3.3 + APC 88.36 117.40
5.4.39 28.06 356.34
5.4.39 + APC 122.75 81.46
5.5.25 131.88 75.82
5.5.25 (nginx) 134.19 74.52
5.6.9 141.94 70.45
5.6.9 (nginx) 152.38 65.62
HHVM 3.7.0 108.59 92.08
PHP 5.2~5.4는 APC 모듈을 설치하지 않을 경우 초당 30회의 요청도 소화하지 못하고, 각 페이지를 로딩하는 데도 0.3초 이상 걸립니다. 그야말로 안습입니다.
그러나 APC를 설치하면 3~4배의 성능 향상을 얻을 수 있습니다. XE는 기본적으로 인클루드되는 파일 수가 장난이 아니기 때문에, 인클루드할 파일들을 미리 캐싱해 두는 APC의 덕을 톡톡히 보는 것 같습니다. (APC가 아니라도 Zend Optimizer, eAccelerator 등을 사용하면 비슷한 효과를 얻을 수 있습니다.)
PHP 5.5~5.6은 APC와 같은 기능을 하는 opcache 모듈이 내장되어 있어서 안정적인 성능을 보여줍니다. 초당 130~150회의 요청을 소화할 수 있고, 각 페이지의 로딩 시간도 0.065~0.075초로 크게 줄어들었습니다. nginx를 사용할 경우 약간의 성능 향상이 있지만, 큰 차이는 아닙니다. (실제 nginx의 성능 향상은 CSS, JS, 이미지 파일 등을 불러올 때 느낄 수 있으므로, PHP단의 성능만 측정할 때는 큰 차이가 없습니다.)
HHVM은 의외로 기대에 못 미치는 성능을 보여줍니다. XE의 특성상 코드를 미리 컴파일해 두는 RepoAuthoritative 기능을 사용하지 못해서 HHVM이 제 성능을 발휘하지 못하는 것인지도 모릅니다.
결론
PHP 버전, APC와 같은 캐싱모듈 사용 여부, nginx 사용 여부 등에 따라 최대 5배 이상의 성능 차이가 날 수 있습니다. 캐싱모듈 사용시에도 버전에 따라 편차가 크고, PHP 5.5 이상에 내장된 opcache 모듈을 감히 따라가지 못합니다.
최고의 성능을 얻으려면 nginx + PHP 5.6 조합으로 사용하세요.
사족
동일한 환경에서 그누보드 5.0.34 메인화면을 띄워보니 초당 204회에서 최대 813번까지 무지막지한 로딩속도를 보여주었습니다 ㅡ.ㅡ;; 그러나 설치 직후 그누보드 메인화면에는 그다지 뜨는 게 없다는 것이 함정 ㅋㅋ
PHP 7.0은 다음 글에서 테스트합니다.
https://www.xpressengine.com/forum/23018301
댓글 20
-
GG
2015.05.28 14:09
-
기진곰
2015.05.28 16:31
추가 벤치마킹 결과 도착!!!
Debian 8 + Apache 2.4.10 (mpm_prefork) + PHP 5.6.7 (mod_php5) : 126.95 req/s
Debian 8 + Apache 2.4.10 (mpm_event) + PHP 5.6.7 (mod_proxy_fcgi & FPM) : 168.70 req/s
Debian 8 + nginx 1.6.2 + PHP 5.6.7 (FPM) : 177.14 req/s
아파치 2.4에 PHP-FPM으로 연결하면 기존 mod_php5 방식보다 빠릅니다.
그러나 nginx보다 더 빠르지는 않네요 ㅎㅎ
(FPM은 양쪽 모두 유닉스 소켓으로 연결했습니다.)
-
GG
2015.05.28 17:10
php5.2 노캐시 아파치2.2랑 비교하면 하늘과 땅 차이네요 -
sol
2015.05.28 14:11
CPU Core 수와 PHP-FPM의 설정 값에 따라 더 많은 차이가 있을텐데요.
조금 더 상세하게 테스트하면 더 좋을 것 같습니다.
-
기진곰
2015.05.28 14:23
나중에 PHP 7.0 나오면 16코어짜리 서버 구해서 다시 테스트해 볼게요 ㅎㅎ
FPM은 소켓으로 통신하고 pm.* 설정도 나름 최적화했습니다.
-
화랑529
2015.05.28 15:03
5.6.9 버전이 제일 좋네요..
-
ilbe
2015.05.28 20:11
PHP5.6/NGINX/Opcache/Memcached 운용해도 느려서 (물론 다른 Xe 사이트랑 비교하면 빠른수준이겠지만) Classes / Config / Common / Libs (XE1.8.2) 전부 뜯어고쳤습니다.
1.7버전에서도 해당내용과 같이 적용하니 호스팅어에서 XE는 도저히 못쓰겠다고 그누보드로 이전하겠다고 하시다가 그대로 XE로 써도 되겠다고 하실정도까지 되더군요.
호스팅어쪽에는 서버사양 업그레이드나 최적화따위는 없이 Classses와 Config만 수정한것으로 로딩에 1-3분정도 걸리던게 5초-10초선으로 줄어들었습니다.
야매로 배워서 어떤부분이 해당성능을 올리는지는 모르겠지만 펑션 누락같은건 없었습니다.
일단 cafe24로 체크해봤습니다, 3000ms에서 1400ms로 줄어들었네요.
혹시나 해서 덧붙이는데 innoDB입니다.
-
socialskyo
2015.05.28 20:43
혹시 일베 사이트 개발자 이신가요?
-
ilbe
2015.05.28 20:48
여튼 속도향상이 안된다고 하는이유가 무엇인지 모르겠네요
서버 최적화 인덱싱과 같은 튜닝작업이 전혀없이 해당내용을 적용한사이트와 튜닝작업을 한 사이트의 속도가 같을지경입니다
-
기진곰
2015.05.28 21:16
classes와 config를 일부 수정하는 것만으로 마법같은 속도향상이 가능하다면 소스 공유 좀 해주세요. 애타게 기다리고 있는 사람들이 많습니다.
그런데 1~3분, 5~10초, 1400~3000ms는 대체 어떤 경우인지 모르겠네요. 저도 카페24 웹호스팅에서 운영하는 XE 사이트가 하나 있습니다만, 웬만한 게시판은 아무리 오래 걸려도 400ms 정도면 다 로딩되던데요...
-
ilbe
2015.05.28 21:23
그건 모르겠네요, 호스팅어가 문제인지 아예 접속이 안될때도 있었던지라
ms는 잘못봤네요, 1.20s에서 700-800ms입니다.
-
Luatic™
2015.05.28 20:44
좋은 정보 감사합니다 :)
-
쿨럭이
2015.05.29 05:08
역시 엑스엔진인듯하네요.. 저두 최근 엑스엔진으로 교체하였습니다. 확실히 속도차이가 월등함을 느꼇죠. 허나 어느분께서 아파치 event mpm + PHP-FPM으로도 좋다고 하여 오늘 다시 아파치로 새로 셋팅해서 시도 했습니다. 기대와는 달리 실망스럽더군요.. 아무래도 뭔가 튜닝이 더 필요한게 아닌가 싶기도 하고.. 구글링으로 튜닝방식이 마땅히 없구.. ㅠㅠ 다시 엑스엔진으로 갈까 고려중이네요..
혹시 아파치 말고 PHP-FPM 튜닝에대해 좀 아시는분~~~~헬~~~
-
날자고도
2015.11.29 04:56
PHP 5.5, 5.6에서 OPcache활성화, 비활성화에 따른, 성능체크가 있으면 더 좋았을거 같아요 ^^
-
기진곰
2015.11.29 17:09
기본으로 포함된 기능인데 굳이 끌 필요가 있나요?
-
delphiXE2
2015.11.29 23:02
httpd, lighttpd, nginx와 기타 웹서버, 그리고 hhvm 등 여러가지 시행착오를 하다가, 최근에 아는 분이 Litespeed를 추천하여 주셔서 사용해 보았는데 아주 만족도가 높습니다.
Litespeed는 자체개발 LSAPI로 PHP를 로드하는데 이게 성능이 꽤나 괜찮아 보입니다. 상용이 아닌 공개된 Openlitespeed에서도 이것이 포함되어 있어서 확인할 수 있습니다. 다만 제가 사용해 보니 컨트롤 패널에서 가상호스트 설정하는데도 애를 먹었습니다. 하여튼 시간나면 좀 더 나은 성능을 위해 한번 사용해 보실만한 가치가 있을지도 모르겠습니다.
물론 nginx도 생소한 현실에서 고객들에게 (open)litespeed를 권하기는 어렵겠습니다만..
-
dididi
2015.11.30 11:21
최근에 주목 받는 서버중에 H2O 웹 서버가 있더군요.
H2O는 최근 표준화된 HTTP2에 특히 최적화 되어있다고 알려져 있습니다.
최근 실 운영환경이 SSL 통신을 기본으로 생각해야하니 H2O 같은 서버도 살펴보는게 나쁘지 않은것 같아요.
-
delphiXE2
2015.11.30 12:40
아마 nginx가 성능만으로 최고의 자리에 있다고 보기는 어렵습니다. 제가 이야기했던 litespeed를 비롯해서 말씀하신 h2o는 물론, G-Wan, IIS, Lighttpd 등등의 성능이 전체적으로 혹은 부분적으로 더 나은 구석이 있습니다. 다만 그 다음 문제인 PHP 처리가 어떻게 될지가 문제가 되는 것입니다.
-
dididi
2015.11.30 13:33
네. 저 또한 그렇다고 생각합니다. 혹시 H2O와 PHP의 연동사용에 관심있으신 분이 있을까 하여 아래의 링크를 남겨둡니다.
- https://www.symfony.fi/entry/serving-php-on-http-2-with-h2o-and-hhvm-symfony-wordpress-drupal
실사용에서는 어떨지 모르겠지만, HTTP2상황에서는 재미난 구석이 있어보이네요.
-
김명수
2016.03.21 12:20
감사합니다~
오... 테스트 수고 많으셨어요.
한가지 아쉬운건 apache 2.4 버전대가 2.2와 성능 차이가 좀 나지 않을까요?
2.4 버전으로 하셨으면 어떨까 해요. ㅎㅎ