RadarURL

웹 프로그래밍
2012.05.09 03:21

XpressEngine XE 1.5 캐시 사용으로 성능 극대화

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

이 포스트는 루마니아 XE팀에서 실행했던 XE 1.4 대비 1.5 버전의 성능 테스트 결과를 번역한 것입니다. 번역 과정에서 의역 또는 오역이 포함되어 있을 수 있습니다. 원문 보기.

XE 1.5의 주요한 개선점 가운데 하나는 성능 입니다. 이 글은 개선 사항을 통해 사용자가 어떤 이점을 취할 수 있는지 그리고 XE 1.4 버전과 비교하여 얼마나 빨라졌는지를 보여 주려고 합니다. 캐싱과 데이터베이스 복제 그리고 다중 서버를 실험 했습니다.

캐싱

캐시는 어떻게 활성화 하죠? 무엇이 어떻게 캐싱 될까요?

XE에는 오브젝트 캐시와 템플릿 캐시가 있습니다. 오브젝트 캐시는 모듈 인스턴스, 사용자 정보, 레이아웃 정보, 문서 등 객체를 저장하는데 사용됩니다. 템플릿 캐시는 미리 컴파일된 템플릿 파일을 저장하기 위해 사용됩니다. 우리가 모르는 사이 모든 템플릿 파일(사용된 스킨 등)은 PHP가 해석 가능한 형태로 디스크에 저장 됩니다. 매번 디스크로부터 이 정보를 읽어내는 데에는 시간이 걸리기 때문에 템플릿 캐시는 속도를 높이기 위해 APC 또는 Memcache로 저장 합니다.

캐시 사용하기

우선 PHP APC 또는 Memcached가 설치되어 있는지 확인합니다. 자세한 설치 방법은 인터넷에 많은 자료가 소개되어 있으니 여기서는 생략하겠습니다.

XE 설정 파일에 간단한 캐시 활성 코드를 추가 합니다. ./files/config/db.config.inc 파일을 찾아서 맨 아래 두 라인을 추가 합니다.

$db_info->use_object_cache = 'apc';
$db_info->use_template_cache = 'apc';

끝입니다. 'apc' 대신 'memcache'를 사용할 수도 있습니다. 더 정확하게 말하면 memcache 연결 문자열은 'memcache://localhost:11211' 이런식으로 써야 합니다.

설정 파일에 이 라인을 추가하지 않더라도 php.ini 에서 APC를 활성화 하면 XE 설치가 훨씬 빨라집니다. 이것은 APC가 opcode 캐싱을 하기 때문인데요. 매 페이지를 로드할 때 PHP 해석기가 PHP 스크립트를 바이트 코드로 해석하지 않는다는 것을 의미합니다. XE 캐시로 memcache를 사용하더라도 여러분의 서버에 APC를 설치할 것을 강력하게 권장합니다.

memcache는 사용할 때 기본적으로 memcache 서버가 접근/설정 불가능한 경우 아무런 메시지를 받지 못하기 때문에 PHP가 웹 서버로부터 memcache 서버로 접근 가능한지를 미리 확인해야 합니다. 이것을 확인하기 위해 작은 스크립트를 실행해 보는 편이 좋습니다.

캐시 적용 결과

우리는 XE를 통해 몇 가지 성능 테스트를 실행해 봤습니다. 이 포스트 하단에서 더 자세한 테스트 환경을 볼 수 있습니다. 그 전에 우리가 사용하는 부하 테스트 도구인 그라인더에서 사용하는 측정 단위 'TPS'(Tests Per Second)를 알아야 합니다. 이것은 초당 얼마나 많은 부하(우리의 경우 텍스타일에서 글 읽기+글 쓰기+댓글 쓰기)를 성공적으로 처리 했는지를 표시하는 단위 입니다.

테스트 하는 동안 XE 1.5는 XE 1.4.5에 비하여 HTTP 요청당 DB 쿼리 수가 조금 더 높다는 것을 확인 했습니다. 이런 이유로 아무런 설정을 하지 않는 경우 XE 1.5는 XE 1.4.5에 비하여 조금 더 느린 경향(MySQL과 CUBRID에서 2% 정도)이 있습니다. 그러나 데이터 캐시를 활성화(단일 서버는 APC, 다중 서버는 memcached) 함으로써 XE 1.5는 XE 1.4.5에 비하여 현저하게 빨라집니다. 테스트 결과는 APC를 사용한 단일 서버에서 28%, memcached를 사용한 다중 서버에서 42% 빠른 결과를 보여 주었습니다.

xeResult1.png 

TPS 수치가 높으면 성능이 훨씬 좋다는 의미 입니다. 그래프 왼쪽으로부터 '캐싱 안된 1.4.5, 캐싱 안된 1.5, APC 캐싱된 1.5, memcached 캐싱된 1.5' 순 입니다.

아래 그래프를 통해 단지 캐시를 사용하는 것 만으로도 58 으로부터 38 까지 데이터베이스 쿼리 수가 감소한다는 것을 확인할 수 있습니다.

xeResult1-1.png 

복제

XE 1.5에 추가된 다른 하나는 XE 설치 시 하나 이상의 DB를 사용할 수 있도록 개선한 것입니다. XE 복제는 복제를 지원하는 모든 DB에서 사용 가능합니다. XE가 지원하고 있는 DBMS인 MySQL, CUBRID, MS-SQL에서 DB 복제가 가능하다는 의미 입니다.

복제를 위한 XE 설정

복제 설정을 하려면 XE의 설정 파일(./files/config/db.config.php)에서 모든 데이터베이스 서버 접속 문자열을 제공해야 합니다. 단일 마스터 접속 문자열($db_info->master_db)과 여러 개의 슬래이브($db_info->slave_db)를 제공할 수 있습니다.

$db_info->master_db = array('db_type' => 'mysql','db_port' => '3306','db_hostname' => 'localhost','db_userid' => 'root','db_password' => 'pass','db_database' => 'xe150','db_table_prefix' => 'xe_');

$db_info->slave_db = array(array('db_type' => 'mysql','db_port' => '3306','db_hostname' => 'localhost','db_userid' => 'root','db_password' => 'pass','db_database' => 'xe150','db_table_prefix' => 'xe_'));

모든 SELECT 쿼리가 슬래이브에서 실행되고 모든 INSERT, UPDATE, DELETE 쿼리가 마스터에서 실행되기 때문에 설치 직후 db.config 파일은 마스터와 슬래이브에 동일한 연결을 포함합니다. 이것은 마스터 데이터베이스에서 SELECT를 원하는 경우 슬래이브 배열에도 추가해 주어야 한다는 의미 입니다.

복제하면 얼마나 빠를까요?

XE 1.5 텍스타일에 하나의 마스터와 하나의 슬레이브를 사용한 MySQL 복제 테스트 결과 약 8% 정도 성능이 개선 되었습니다.

xeResult2.png 

다중 웹 서버

XE에 다중 웹 서버를 사용하길 원한다면 첨부 파일이 어떻게 저장 되는지에 대한 이슈를 알아야 합니다. 첨부 파일은 업로드했던 서버의 files 폴더에 저장되기 때문에 다른 서버가 찾으려고 요청하면 파일을 찾을 수 없습니다. 때문에 파일/첨부 파일 폴더의 동기화를 유지하는 도구를 사용해야 합니다.

또한 XE 캐싱을 사용하기로 결심했다면 APC 캐시가 다중 웹 서버 사이에서 공유 불가능 하다는 것을 알아야 합니다. 이것은 여러분이 다중 웹 서버를 사용하는 경우 memcached를 사용해야 하는 이유 입니다. 그럼에도 불구하고 각각의 서버에 opcode 캐싱을 위해 APC 캐시를 사용하는 것이 좋다는 사실을 기억하세요.

성능 테스트 상세

성능 테스트를 위해 10개의 텍스타일 블로그에 1만개의 포스트와 10만개의 댓글 그리고 하나의 웹 서버와 하나의 DB 서버를 사용 했습니다. 테스트하는 동안 memcache 서버와 다른 DB 및 웹 서버를 테스트 하기 위해 세 번째 장비를 추가 했습니다.

부하 테스트를 위해 자바 부하 테스트 프레임웍인 그라인더를 사용했습니다. 100명의 동시 접속자가 989 페이지를 읽고 하나의 글과 10개의 댓글을 써서 매번 1천 번의 요청을 재현하는 방식으로 테스트 했습니다. 이런 요청을 보내기 위해 그라인더 에이전트로써 각각 50 워커의 프로세스를 갖는 두 대의 전용 장비를 사용 했습니다. 에이전트와 워커가 그라인더에서 그들의 문서를 어떻게 호출했는지 아래 URL을 통해서 더 자세한 내용을 알 수 있습니다. http://grinder.sourceforge.net/g3/getting-started.html

 

출처 : http://www.xpressengine.com/blog/20551940

?

공부 게시판

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

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 927849
906 하드웨어 안드로이드 원격제어 [모비즌] 사용후기 JaeSoo 2012.05.24 4862
905 하드웨어 내 폰이랑 친구 폰 바꾸고 싶나요? USIM을 바꾸세요 JaeSoo 2012.05.24 5638
904 하드웨어 갤럭시탭 펌웨어 업그레이드 안내 JaeSoo 2012.05.24 5350
903 하드웨어 갤럭시탭 공장 초기화 방법 file JaeSoo 2012.05.24 21835
902 하드웨어 Intel CPU 성능비교표 (passmark 벤치자료) JaeSoo 2012.05.23 5240
901 경제 최고의 개인간 안전거래사이트는 어디일까? 비즈팅,세이프유,유니크로,네스크로 비교분석 file JaeSoo 2012.05.21 6090
900 하드웨어 인텔 셀러론 G530, MSI H61M-P20 G3 조합 성능 벤치마크. (Intel Celeron G530 CPU, Gen 3 motherboard) JaeSoo 2012.05.19 3867
899 윈도우즈 윈도우 7 vs 비스타 vs XP 성능 차이는? JaeSoo 2012.05.18 3593
898 윈도우즈 Windows XP에서 성능 옵션을 설정하는 방법 JaeSoo 2012.05.17 4875
897 하드웨어 PassMark - CPU Mark : Low Mid Range CPUs - Updated 16th of May 2012 JaeSoo 2012.05.17 7514
896 하드웨어 [전문가리뷰] 인텔 차세대 아톰 플랫폼 Cedar Trail, 무엇이 바뀌었나? JaeSoo 2012.05.17 4809
895 카메라 CPL 필터 사용법에 대한 초보자들을 위한 글~ JaeSoo 2012.05.13 7123
894 웹 프로그래밍 JW Player 기본 태그 JaeSoo 2012.05.12 5901
» 웹 프로그래밍 XpressEngine XE 1.5 캐시 사용으로 성능 극대화 JaeSoo 2012.05.09 3722
892 데이터베이스 고급 조인 만들기 : SELF JOIN, NATURAL JOIN, OUTER JOIN JaeSoo 2012.05.09 6185
891 데이터베이스 쿼리의 결합 : UNION 으로 쿼리 결합하기 file JaeSoo 2012.05.09 4340
890 기타 비둘기 집의 원리 (Pigeonhole principle) file JaeSoo 2012.05.08 4854
889 보안 암호화 알고리즘 종류와 관련 용어 file JaeSoo 2012.05.08 6402
888 경제 담보대출(주택,아파트,상가,전세보증금):한국주택금융공사, 은행, 2금융권대출 비교 file JaeSoo 2012.05.07 4754
887 경제 주택담보대출 이자…"`은행간 年 343만원 차이" file JaeSoo 2012.05.07 3754
Board Pagination Prev 1 ... 74 75 76 77 78 79 80 81 82 83 ... 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

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

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

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

JServer.kr

제이서버 메타블로그

재수 티스토리


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

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너