1. 程式人生 > >PHP服務緩存加速——xcache的安裝與配置

PHP服務緩存加速——xcache的安裝與配置

PHP LNMP

1.PHP緩存加速器介紹

(1)操作碼的介紹和加速器的原理

當客戶請求一個PHP程序時,服務器的PHP引擎會解析該PHP程序,並將其編譯為特定的操作碼(Operate Code,簡稱opcode文件),該文件是執行PHP代碼後的一種二進制的表示形式。默認情況下,這個編譯好的的操作碼文件由PHP引擎執行後丟棄。而操作碼緩存(opcode cache)的原理就是將編譯後的操作碼報錯下來,並放到共享內存裏,以便在下次調用PHP頁面時重用它,它避免了相同代碼的重復編譯,節省了PHP引擎重復編譯的時間,降低了服務器負載,同事減少了CPU和內存的開銷。

(2)PHP緩存加速器軟件介紹

為了提高PHP引擎的高並發訪問以及執行速度,產生了一系列PHP緩存加速軟件。這些軟件設計的目的就是緩存前文提到的PHP引擎解析過的操作碼文件,以便在指定的時間內有相同的PHP程序請求訪問時,不需要重復解析編譯,而是直接調用緩存中的PHP操作碼文件,這樣就提高了動態Web服務的處理速度,從而提升了用戶訪問企業網站的整體體驗。

(3)LNMP環境PHP緩存加速器的原理詳解。

在LNMP環境中,PHP引擎使用獨立的FCGI(即php-fpm進程,Apache用的是libphp.so模塊),由他來偵聽來自Nginx的PHP程序請求,並交給PHP引擎處理,整個的執行流程大概如下。

1)Nginx接收客戶端的PHP程序訪問請求

2)Nginx根據拓展名等過濾規則將PHP程序請求傳遞給解析PHP的FCGI進程。

3)PHP FPM進程調用PHP解析器讀取站點磁盤上的PHP文件,並加載到內存中。

4)PHP解析器將PHP程序編譯成opcode文件,然後把opcode緩存起來。

5)PHP FPM引擎執行opcode樹後,返回數據給Nginx,進而返回客戶端

6)Nginx接收客戶新的PHP程序請求,PHP引擎就會直接讀取緩存中的opcode並執行,將結果返回。不需要進行第四部,提高了php編譯解析效率。

2.PHP緩存加速器安裝環境準備

PHP緩存加速軟件種類不少,比如eAccelerator,APC,Xcache,ZendOpcache等。在這裏我們選擇時候Xcache,原因是Xcache的效率較高,社區的活躍度較高,支持5.6版本的PHP。ZendOpcache可能是未來的首選,為官方的加速器軟件,但是目前用的人還不多。

在安裝Xcache加速器前,我們需要安裝好LNMP的完整的環境,在前面我們就已經安裝配置好了LNMP的服務環境了。安裝的版本如下

項目版本
LinuxCentOS release 6.5 (Final)
Nginxnginx-1.12.2
MySQL5.6.31 64bit
PHPphp5.6.31
3.安裝Xcache緩存加速器

因為我們用的PHP版本為5.6,通過Xcache官網可以了解到需要用到3.20的版本才能支持PHP5.6,可以到官網下載。http://xcache.lighttpd.net/。安裝的步驟為解壓,編譯安裝,具體的命令如下:

tar -xf xcache-3.2.0.tar.gz
cd xcache-3.2.0.tar.gz
/usr/local/php/bin/phpize        #必不可少的一步
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config 
make
make install

編譯安裝的過程中如果提示缺少什麽類庫文件,可以用yum開安裝,安裝成功之後會在php目錄下生成xcache.so的文件。

技術分享圖片

4.安裝數據庫緩存及其他的PHP拓展插件(可選)

(1)安裝PHP Memcached拓展插件

Memcached是一個開源,支持高性能,高並發及分布式的內存緩存服務軟件。在傳統的場景下,多數的Web應用都將數據保存到數據庫中,WWW服務器從中讀取數據並在瀏覽器中顯示。但隨著數據量的增大,訪問的集中,就會出現RDBMS的負擔加重,數據庫響應緩慢,網站打開延遲的問題。使用Memcached的主要目的是,通過在自身內存中緩存數據庫的查詢結果,減少數據訪問次數,以達到減少前端業務對數據庫的直接高並發訪問,從而提高大規模網站集群動態服務的並發訪問能力。

Memcached我們會在以後的博文再做詳細的介紹,這裏我們只安裝Memcachedd的客戶端軟件——Memcache,為了以後搭建好Memcached服務後可以使用。安裝的步驟如下:

tar -xf  memcache-2.2.7.tgz
/usr/local/php/bin/phpize        #必不可少的一步
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config 
make
make install

安裝成功之後會在php目錄下生成memcache.so的文件。

技術分享圖片

(2)安裝ImageMagick圖像軟件

ImageMagick是一套功能強大,穩定而且免費的工具包和開發包,可以用來讀寫和處理89種基本格式額圖片文件。利用ImageMagick,可以根據web應用程序的需要動態生成圖片,還可以對一個(或一組)圖片進行改變大小,旋轉,銳化等操作,並將操作的結果以相同的格式或者其他格式保存。安裝的步驟如下:

tar -xf ImageMagick-6.7.9-9.tar.xz
cd ImageMagick-6.7.9-9
./configure
make
make install

PS:這個軟件不是PHP的拓展,所以是沒有生成.so,後面安裝的imagick插件就會生成對應的.so文件。

(3)imagick插件工作需要ImageMagick軟件的支持,所以需要先安裝ImageMagick軟件,否則安裝不了該插件。安裝的辦法同上:

tar  -xf imagick-3.4.3.tgz            #之前打算安裝2.3的版本,報錯,後來到官網找到一個較新的版本
cd imagick-3.4.3
/usr/local/php/bin/phpize        #必須的一步
./configure --with-php-config=/usr/local/php/bin/php-config
 make
 make install

安裝成功之後會在php目錄下生成imagick.so的文件。

技術分享圖片

5.配置PHP加速和緩存相關的拓展插件模塊

(1)配置Memcache/imagick模塊生效

要使剛剛安裝的模塊起效,我們需要編輯php的配置文件php.ini。執行vim /usr/local/php/lib/php.ini,查找"extension_dir",然後改為"

extension_dir = "/usr/local/php5.6.31/lib/php/extensions/no-debug-non-zts-20131226/",接下來在文件的最後加入"

extension = memcache.so extension = imagick.so",配置文件的部分截圖如下:

技術分享圖片

技術分享圖片

驗證php.ini文件,如果沒問題,重啟php-fpm服務,查看phpinfo()網頁檢查對應的插件

/usr/local/php/sbin/php-fpm -t        #出現successful字樣才行
pkill php-fpm             #重啟php-fpm服務
/usr/local/php/sbin/php-fpm

技術分享圖片

技術分享圖片

(2)配置Xcache插件加速

在軟件的解壓目錄下/root/xcache-3.2.0,有個xcache.ini的配置文件,也就是XCache的配置文件。我們根據這個配置文件進行參數的調整之後,復制到php.ini文件的最後,部分的參數說明看備註

[xcache-common]
extension = xcache.so        ;加載xcache.so
[xcache.admin]
xcache.admin.enable_auth = On        ;開啟認證
xcache.admin.user = "pcm"                                    ;這個自定義
xcache.admin.pass = "62b6d07a02edc7d58cb622def452e81b"        ;這個MD5是後面生成填寫進去的
[xcache]
xcache.shm_scheme =        "mmap"    ;設置xcache如何從系統分配共享內存
xcache.size  =               256M    ;設置xcache緩存的大小值
xcache.count =                 1
xcache.slots =                8K
xcache.ttl   =                 86400        ;設定cache對象的生存期TTL,0為永不過期
xcache.gc_interval =           3600
xcache.var_size  =            64M
xcache.var_count =             1
xcache.var_slots =            8K
xcache.var_ttl   =             0
xcache.var_maxttl   =          0
xcache.var_gc_interval =     300
xcache.var_namespace_mode =    0
xcache.var_namespace =        ""
xcache.readonly_protection = Off
xcache.mmap_path =    "/dev/zero"
xcache.coredump_directory =   ""
xcache.coredump_type =         0
xcache.disable_on_crash =    Off
xcache.experimental =        Off
xcache.cacher =               On
xcache.stat   =               On
xcache.optimizer =           Off
[xcache.coverager]
xcache.coverager =           Off
xcache.coverager_autostart =  On
xcache.coveragedump_directory = ""

添加完成之後我們檢查Xcache加速情況的配置,下圖可以看到Xcache的配置已經本引用了。

技術分享圖片

然後我們重啟php-fpm進程,到phpinfo()頁面檢查是否起效

/usr/local/php/sbin/php-fpm -t        #出現successful字樣才行
pkill php-fpm             #重啟php-fpm服務
/usr/local/php/sbin/php-fpm

技術分享圖片

PS:MD5生成管理員密碼的方法

[root@WEB-LNMP-01 ~]# echo -n "pcm123456" |md5sum 
62b6d07a02edc7d58cb622def452e81b  -            把密鑰放到php.ini文件裏面去

(3)配置web界面,查看xcache緩存加速信息

在xcache軟件的解壓目錄下有管理xcache的站點目錄,我們把它復制到blog虛擬主機上。操作如下

cp -a /root/xcache-3.2.0/htdocs/ /usr/local/nginx/html/blog/xadmin 
chown -R nginx:nginx /usr/local/nginx/html/blog/xadmin/
pkill php-fpm             #重啟php-fpm服務
/usr/local/php/sbin/php-fpm

瀏覽器然後打開xadmin頁面,輸入賬號密碼就會出現下面的頁面。http://blog.pcm.com/xadmin/index.php

技術分享圖片

6.PHP緩存加速的壓力測試

這些我們都做好了,總要知道做了這些配置之後我們的性能有了多少提升。下面我們用webbench工具來測試,webbench的安裝和使用辦法可以參考https://www.cnblogs.com/fjping0606/p/5852049.html,下面測試的結果

(1)使用了緩存加速器的情況。並發數量為30,測試時間30秒

技術分享圖片

測試的時候,top的截圖

技術分享圖片

(2)不使用加速器的情況,並發數量為30,測試時間30秒。

技術分享圖片

對應的top的情況

技術分享圖片

(3)可以看出,使用了xcache緩存加速器之後,訪問php網頁的性能提升了3倍左右。




PHP服務緩存加速——xcache的安裝與配置