PHP 가속프로그램 eaccelerator

예전에 eaccelerator 를 적용했을때는 간혹 문제가 발생이 되었는데
이번에 한번 서버에 적용시켜보기로 했다

실제 내 개인 사이트가 아닌 웹호스팅서버에 적용하려고 먼저 테스트


도입효과
eAccelerator는 PHP가속, 최적화, 동적 컨텐츠 캐시임(PHP Op-Code Caching)


  – 코드 변경 필요없음
  – 컴파일된 상태의 PHP 스크립트를 캐시하여 실행속도 성능향상됨


  – 페이지 Rendering time이 빨라짐 (2-10배)
  – CPU/메모리 사용량이 감소하여 서버 load를 감소


공식 홈페이지 : http://www.eaccelerator.net/



현재 0.9.5.3에서 PHP4, PHP 5.2 까지 지원하고 있으며 PHP5.3는 0.9.6-rc1에서 지원함


사용환경은 아래와 같다

Centos 5.x (64bit)
PHP : 5.2.5
Zend : 3.3


1. 다운로드 및 설치



[root@ns1 ~]# tar xvfj eaccelerator-0.9.6.tar.bz2

[root@ns1 ~]# cd eaccelerator-0.9.6

[root@ns1 eaccelerator-0.9.6]# /usr/local/php/bin/phpiz

[root@ns1 eaccelerator-0.9.6]# ./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config

[root@ns1 eaccelerator-0.9.6]# make && make install


 2. 모듈 확인



[root@ns1 eaccelerator-0.9.6]# ll /usr/local/php/lib/php/extensions/no-debug-zts-20060613/
-rwxr-xr-x 1 root root 396084  4월 28 16:01 eaccelerator.so

3. 캐쉬가 저장될 디렉토리 생성 및 권한 설정


[root@ns1 eaccelerator-0.9.6]# mkdir /var/tmp/eaccelerator
[root@ns1 eaccelerator-0.9.6]# chmod 700 /var/tmp/eaccelerator/
[root@ns1 eaccelerator-0.9.6]# chown nobody /var/tmp/eaccelerator/

4. 이제 환경설정 내용을 php.ini에 추가해 준다



[root@ns1 eaccelerator-0.9.6]# vi /usr/local/apache/conf/php.ini

추가 (zend 위에 추가한다)


[eaccelerator]
zend_extension_ts=/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so
eaccelerator.shm_size=32
eaccelerator.cache_dir=/var/tmp/eaccelerator/
eaccelerator.enable=1
eaccelerator.optimizer=1
eaccelerator.debug=0
eaccelerator.log_file=/var/log/eaccelerator_log
eaccelerator.name_space=””
eaccelerator.check_mtime=1
eaccelerator.filter=””
eaccelerator.shm_max=0
eaccelerator.shm_ttl=3600
eaccelerator.shm_prune_period=0
eaccelerator.shm_only=0
eaccelerator.compress=1
eaccelerator.compress_level=9
;eaccelerator.keys=”shm_and_disk”
;eaccelerator.sessions=”shm_and_disk”
;eaccelerator.content=”shm_and_disk”
;eaccelerator.allowed_admin_path=””

5. 이제 적용이 잘되었는지 콘솔 상태에서 확인해 보자 eaccelerator 추가가 된것이 확인된다


[root@ns1 eaccelerator]# php -v
PHP 5.2.5 (cli) (built: Mar 26 2010 17:39:11)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
    with eAccelerator v0.9.6, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
    with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies
    with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies

6. 이제 아파치를 재 시작하고 /var/tmp/eaccelerator 캐싱 디렉토리에 파일이 생성이 될 것이다


[root@ns1 eaccelerator]# ll /var/tmp/eaccelerator/0/0
합계 7828
-rw——- 1 nobody nobody  26696  4월 28 16:11 eaccelerator-1802.0068174
-rw——- 1 nobody nobody   4584  4월 28 16:11 eaccelerator-1802.01541571
-rw——- 1 nobody nobody   1272  4월 28 16:17 eaccelerator-1802.01853713
-rw——- 1 nobody nobody   7096  4월 28 16:29 eaccelerator-1802.01932353


이제 실제 웹 사이트에서 테스트를 해보자
우선 다른 곳에서 이 서버의 ab 벤치테스트를 진행해보자

1. Zend 만 사용시


[root@ns1 bin]# ./ab -n200 -c1 -dS “http://xinet.kr/tc/index.php
Benchmarking xinet.kr (be patient)

Concurrency Level:      1
Time taken for tests:   83.842703 seconds
Requests per second:    2.39 [#/sec] (mean)
Time per request:       419.214 [ms] (mean)
Time per request:       419.214 [ms] (mean, across all concurrent requests)
Transfer rate:          475.87 [Kbytes/sec] received

Connection Times (ms)
              min   avg   max
Connect:        0     0    0
Processing:   402   418  579
Total:        402   418  579


2. eaccelerator + Zend 사용시


[root@ns1 bin]# ./ab -n200 -c1 -dS “http://xinet.kr/tc/index.php

Concurrency Level:      1
Time taken for tests:   54.254420 seconds
Requests per second:    3.69 [#/sec] (mean)
Time per request:       271.272 [ms] (mean)
Time per request:       271.272 [ms] (mean, across all concurrent requests)
Transfer rate:          735.37 [Kbytes/sec] received

Connection Times (ms)
              min   avg   max
Connect:        0     0    0
Processing:   264   270  438
Total:        264   270  438


결과 :

역시 빨라졌다 
Requests per second는 많은 양을 처리했고
Time per request 는 약 1.5배 정도 빨라졌고
이제 실제 웹호스팅서버에 적용하고 아파치에서 사용하는 cpu의 로드부분만 체크하면 된다
추후 모니터링 결과  기재…


eaccelerator 환결설정 옵션 설명
– eaccelerator.shm_size   = eAccelerator가 사용할 공유 메모리량. 단위 MBytes.
     0을 지정하면 OS 기본값. default = 0
   – eaccelerator.cache_dir  = 캐싱 디렉토리를 지정. precompiled code, session data, content
     등이 저장된다.
   – eaccelerator.enable     = eAccelerator 사용 여부. 당연히 1
   – eaccelerator.optimizer  = 최적화 여부. 1= enable, 0 = disable
   – eaccelerator.check_mtime= php 파일 변경시간을 체크하여 반영할 것인지 여부
   – eaccelerator.debug      = debug 로깅 여부
   – eaccelerator.filter     = 캐싱할 php 파일을 지정한다. *.php *.html *.php3 처럼 지정할 수
     있으며 “” 로 비워두면 모든 php 파일이 캐싱된다.

   – eaccelerator.shm_max    = eaccelerator_put() 함수 사용할 때 최대 할당할 수 있는 공유
     메모리 크기를 bytes단위로 표시한다. (예. 10240, 10K, 1M).  0은 제한 없음
     eaccelerator_put() 함수는 공유메모리에 특정 데이터를 지정한 시간동안 넣어두는
     eAccelerator 자체함수이다.
   – eaccelerator.shm_ttl    = 새 스크립트 파일을 캐싱할만한 공유 메모리가 없다면,
     ssh_ttl 초동안 액세스가 없는 모든 스크립트를 삭제한다. default = 0. 0은 삭제안함을 의미
   – eaccelerator.shm_prune_period= 이 설정은 위의 shm_ttl 설정과 비슷하다.
     지정한 초보다 오래전에 만들어진 스크립트를 제거한다.
     즉, shm_ttl은 액세스시간에, shm_prune_period는 생성시간에 따라 삭제한다.
     default = 0. 0은 삭제안함을 의미
   – eaccelerator.shm_only   = 컴파일된 스크립트를 디스크에 캐싱할 것인지 여부.
     session data와 content 캐싱은 이설정과 무관. default = 0.
     0이면 캐싱을 위해 디스크와 메모리를 모두 사용한다.

   – eaccelerator.compress = 캐시된 내용 압축 여부
   – eaccelerator.compress_level= 압축 레벨 지정. 9는 최대 압축 레벨


코멘트 쓰기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.

다음의 HTML 태그와 속성을 사용할 수 있습니다:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



배송정보
배송조회를 하시려면 송장번호를 클릭하세요
배송조회
상품명
주문번호
택배사
송장번호