2013-05-01

Moodle 網站效能增進:使用 eAccelerator 增進 PHP 效能

如果當架設的 moodle 網站流量越來越大時,應該考慮提升網站的效能
在 moodle 官網文件中有關效能的建議請詳見:moodle 2.4 Performance recommendations
其中網頁伺服器的部分,可以使用 PHP 加速器( accelerator ),文章中有提到許多種:
APC、PHPA、Xcache、WinCache、eAccelerator
而 eAccelerator 正是本篇要介紹的內容

首先下載相關套件
yum install php-devel gcc -y
*php-devel:使用其中的 phpize 設定 php 外掛模組
*gcc:make 所需要的編譯器

建立並切換到一個暫存的資料夾 tmp,下載 eAccelerator 0.9.6.1 壓縮檔,接著解壓縮
cd /tmp
wget http://downloads.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.tar.bz2
tar -jxvf eaccelerator-0.9.6.1.tar.bz2
*這裡要注意的是解壓縮參數設定的的部分
前幾篇文章都是 .tar.gz 的壓縮檔,用的是『-z』這個參數
這次是 .tar.bz2 的壓縮檔,所以用的是『-j』

切換到剛才解壓縮的目錄
cd eaccelerator-0.9.6.1

依序執行以下指令安裝套件
phpize
./configure
make
make install
建立 eAccelerator 的 cache 檔存放目錄
mkdir /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator
新增 eAccelerator 的設定檔
vi /etc/php.d/eaccelerator.ini
依序輸入以下內容
extension="eaccelerator.so"
eaccelerator.shm_size="0"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.debug="0"
eaccelerator.check_mtime="1"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.shm_size:加速器存放的容量大小,單位是 MB,"0"表使用預設值
eaccelerator.enable:是否啟用加速器
eaccelerator.shm_ttl、eaccelerator.shm_prune_period:加速器清除 share memory 的時間設定,設為"0"表不清除,文章後面會使用系統排程來清除
有關 eaccelerator.ini 的詳細設定請參考:https://github.com/eaccelerator/eaccelerator/wiki/Settings

重新啟動 Apache 伺服器
service httpd restart
我們來看加速器是否已經正常運作,新增 index.php 網頁目錄
vi /var/www/html/index.php
語法如下,用 phpinfo 來查看 php 的相關資訊
<?php
phpinfo();
?>
接著到瀏覽器輸入『http://IP位址或名稱//index.php』
如果看到以下畫面表示已經正常運作
畫面在往下拉一點,Cached Scripts 的值過一段時間應該會大於"0"

最後,建立一個清理暫存檔的 shell 檔
vi eaccel_cache_remove.sh
依序鍵入以下內容後存檔離開
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
/sbin/service httpd stop
rm -rf /var/cache/eaccelerator/*
/sbin/service httpd start
exit 0
*第一行 PATH 沒有斷行
然後更改 shell 檔權限
chmod 777 eaccel_cache_remove.sh
這個排程每天要甚麼時候執行,請編輯 /etc/crontab
vi /etc/crontab

新增一行
10 0 * * * root /root/eaccel_cache_remove.sh
*請使用絕對路徑,本範例 shell 檔是放在根目錄下
這樣每天晚上12點10分就會執行剛剛所撰寫的 shell 檔內容

等排程結束,再到瀏覽器查看 phpinfo 就會發現 Memory Available 容量增加了
確實排程正常運作,清空 /var/cache/eaccelerator 資料夾中的檔案
參考文章:
How To Install and Integrate eAccelerator into PHP5
Installing the Eaccelerator cache for php - on CentOS
PHP 加速器的調校(php-eaccelerator)

沒有留言 :

張貼留言