深度優化LNMP之PHP

PHP緩存加速介紹
 
1.操做碼介紹及緩存原理
    當客戶端請求一個php程序時,服務器的PHP引擎會解析該PHP程序,並將其編譯爲特定的操做碼文件(Operate Code,opcode)該文件是執行PHP代碼後的一種二進制表示形式。默認狀況下,這個編譯好的操做碼文件由PHP引擎執行後丟棄。而操做碼緩存(Opcode cache)的原理就是講編譯後的操做碼保存下來,冰島共享內存裏,以便在下一次調用該PHP頁面時重用它,避免了相同代碼的重複編譯。節省了PHP引擎重複編譯的時間,下降了服務器負載,同時減小了CPU和內存開銷。加速性能能夠達到2-10倍
 2.PHP緩存加速軟件介紹
    爲了提升PHP引擎的高併發訪問及執行速度,產生了一系列PHP緩存及加速軟件。這些軟件設置的目的就是緩存PHP引擎解析過的操做碼文件,以便在指定時間內有相同的PHP程序請求訪問時,再也不須要重複解析編譯,而是直接調用緩存中的PHP操做碼文件,這樣就提升了動態Web服務的處理速度,從而提高了用戶訪問企業網站的總體體驗。
 
3.Apache環境的PHP緩存加速器原理
    在LAMP環境中,Apache服務是使用libphp5.so響應處理PHP程序請求的,整個流程以下:
一、Apache接收客戶端的PHP程序請求並根據規則過濾。
二、Apache將PHP程序請求傳遞給PHP處理模塊libphp5.so
三、PHP引擎定位磁盤上的PHP文件,並將其加載到內存中解析
四、PHP處理模塊libphp5.so將PHP源代碼編譯成爲opcode
五、PHP處理模塊libphp5.so執行opcode,而後把opcode緩存起來
六、Apache接收客戶端新的PHP程序請求,PHP引擎直接讀取緩存執行opcode文件,並將結果返回。在這一次任務中,就無第4步的編譯解析了,從而提高了PHP編譯解析效率
 
LNMP環境PHP緩存加速器原理詳解
    在LNMP環境中,PHP引擎再也不使用libphp5.so模塊了,而是啓動了獨立的FCGI即php-fpm進程,由它監聽來自nginx的PHP程序請求,並交給PHP引擎解析處理,整個執行流程大概以下:
1)Nginx接收客戶端的PHP程序訪問請求。
2)Nginx根據擴展名等過濾規則將PHP程序請求傳遞給解析PHP的FCGI進程(PHP-FPM)
3)PHP FPM進程調用PHP解析器讀取站點磁盤上的PHP文件,並加載到內存中。
4)PHP解析器將PHP程序編譯爲opcode文件,而後把opcode緩存起來。
5)PHP FPM引擎執行opcode樹,返回數據給Nginx,進而返回客戶端。
6)Nginx 接收客戶新的PHP程序請求,PHP FPM引擎就會直接讀取緩存中的opcode執行,將結果返回,該過程當中無需第4步操做,從而提高了PHP編譯解析效率。
 
 
 
PHP緩存加速器軟件種類及選擇建議
    PHP緩存加速器軟件常見的種類有xcache、eaccelerator、APC(Altemative PHP Cache)、ZendOpache等。
    建議根據企業的業務需求及選擇前的壓力測試結果,或者根據我的的經驗偏好選擇。不過建議首選xcache,其次是eaccelarator,若是想使用新款,能夠選擇ZendOpcache。
 
注:APC全稱爲Altemative PHP Cache,也是一款不錯的PHP緩存加速軟件。能夠查看相關資料文檔: http://pecl.php.net/packages.php和http://pecl.php.net/package/APC
 
 
首選xcache的緣由以下:
1.通過測試xcache效率更好,更快
2.xcache軟件開發社區更活躍。
3.支持更好版本的PHP,例如PHP5.五、PHP5.6
次選eaccelerator的緣由以下:
一、安裝及配置參數更簡單,加速效果也不錯
二、文檔資料較多,但官方對軟件的更新很慢,社區不活躍
三、僅適合PHP版本5.4如下的程序
選擇ZendOpcache的緣由以下:
1.是PHP官方研發的新一代緩存加速軟件,之後的發展潛力可能會很好,PHP5.5之前的版本能夠經過ZendOpcode軟件以插件擴展的方式安裝,從PHP5.5版本開始已經整合到PHP軟件裏了,編譯時只需指定一個參數便可,例如:–enable-opcache
二、ZendOpcache多是將來的緩存加速首選,如今的穩定性還有待檢驗,小規模環境下PHP5之前的版本能夠經過插件式安裝使用,PHP5以上的版本能夠直接指定參數編譯使用,若能夠熱手ZendOpcache的各類未知問題的話,能夠嘗試使用。
 

安裝PHP加速插件

1.環境準備
[root@web02 ~]# cat /etc/redhat-release 
CentOS release 6.7 (Final)
[root@web02 ~]# uname -r
2.6.32-573.el6.x86_64
[root@web02 ~]# uname -m
x86_64
 
2.軟件版本信息
Nginx版本信息
[root@web02 application]# /application/nginx/sbin/nginx -V
nginx version: nginx/1.6.3
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) 
TLS SNI support enabled
configure arguments: --prefix=/application/nginx-1.6.3/ --user=www --group=www --with-http_ssl_module --with-http_stub_status_module
PHP版本信息
[root@web02 application]# /application/php/bin/php -v
PHP 5.5.32 (cli) (built: May 24 2016 13:55:46) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
MySQL版本信息
[root@db01 ~]# mysql -V
mysql  Ver 14.14 Distrib 5.5.49, for linux2.6 (x86_64) using readline 5.1
配置環境變量LC_ALL的過程以下:
[root@web02 ~]# echo 'export LC_ALL=C' >>/etc/profile
#設置環境變量,解決後面perl程序插件的編譯問題
[root@web02 ~]# tail -1 /etc/profile
export LC_ALL=C
[root@web02 ~]# source /etc/profile
[root@web02 ~]# echo $LC_ALL
C
 

 

有關LNMP環境擴展軟件的部署說明

(1)LNMP緩存加速特別提示
    無論是Apache仍是Nginx,最後都是經過PHP提供動態程序解析的,所以,無論是Apache的libphp5.so模塊方式,仍是Nginx的FCGI的PHP服務方式,最後在PHP引擎上的優化是一致的,即都是基於PHP服務(php.ini)的。
(2)安裝Perl相關軟件依賴
    須要提早安裝Perl相關軟件依賴包,執行
yum -y install perl-CPANyum -y install perl-devel
    若是不安裝上述軟件包,在後面安裝ImageMagick時可能會報錯。

安裝PHP緩存加速器擴展

 
安裝PHP eAccekerator 緩存加速模塊
插件說明:
    eAccelerator是一個免費的,開放源代碼的PHP加速、優化以及緩存的擴展插件軟件,它能夠緩存PHP程序編譯後的中間代碼文件(opcache)、sission數據等。下降PHP程序在編譯解析時對服務器的性能開銷。eAccelerator還能夠加快PHP程序的執行速度,下降服務器負載壓力,使PHP程序代碼效率提升1~10倍。
    eAccelerator會把編譯好的PHP程序存放在共享內存裏,而後每次從內存裏調用執行,能夠設定把一些不適合放在內存裏緩存的編譯結果存儲到硬盤上,默認狀況,磁盤和內存都會被eAccelerator使用。
    eAccelerator算是一個老牌的緩存加速軟件,曾經在結合PHP引擎解析式被普遍使用,成熟穩定,目前代碼更新不活躍,所以使用企業逐漸減小,但eAccelerator還是一款值得信賴的緩存加速軟件。Xcache的官方也稱讚eAccelerator是不錯的opcache緩存器。
安裝過程以下:
wget  https://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
tar xf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
/application/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/application/php/bin/php-config
#<==configure的參數路徑要正確配置,特別是後面的--with-php-config參數對應的PHP安裝目錄地址,幾乎全部的PHP擴展都要指定這個參數,請讀者注意,後面過程當中再也不說起。
make
make install
cd ../
ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
提示:php5.5不支持
eAccelerator軟件包下載   密碼:rz1q
phpize介紹
 
    安裝PHP擴展插件的時候,經常須要執行/application/php/bin/phpize。
事實上,phpize是用來擴展PHP擴展模塊的,經過phpize能夠創建PHP的外掛模塊。好比你想在原來編譯好的PHP中加入memcached等擴展模塊,可使用phpize工具。
 
安裝PHP xcache緩存加速模塊
插件說明:
    XCache是一個開源的、又快又穩定的PHP opcode緩存器/優化器。其項目leader曾經是Lighttpd的開發成員之一。XCache經過把對PHP程序編譯後的數據(opcode)緩存到共享內存裏,避免讓相同的程序重複編譯。用戶請求相同的PHP程序時,能夠直接使用緩存中已編譯好的數據,從而提升PHP的訪問速度,一般能夠提高2~5倍,並大幅下降服務器負載開銷。
    不少公司在使用XCache,它已經能在大流量/高負載的生產環境溫度運行,與同類型的opcode緩存器相比在各個方面都更勝一籌。例如:社區活躍、快速開發、可以快速跟進PHP的版本更新等。
當前穩定版本爲3.1x (全面支持PHP5.1~5.5)和3.2 (PHP5.1~5.5)
    有關XCache軟件詳情參考:
安裝步驟:
tar xf xcache-3.2.0.tar.bz2
cd xcache-3.2.0
/application/php/bin/phpize
./configure --enable-xcache   --with-php-config=/application/php/bin/php-config
make
make install
ls -l /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/xcache.so 
cd ..
[root@web02 xcache-3.2.0]# ls -l /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/xcache.so 
-rwxr-xr-x 1 root root 692884 May 30 12:20 /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/xcache.so
舒適提示:每一個PHP插件安裝完成都會在它提示的一個目錄下生成*.so的一個模塊
XCache下載 密碼:dvj5
安裝PHP官方加速插件ZendOpcache
插件說明:
    常見的PHP緩存加速器:APC、eAccelerator、XCache,從PHP5.5開始,官方已經集成了新一代的緩存加速插件,名字爲ZendOpcache,功能和前三者類似但又有少量不一樣,據官方說,這個ZendOpcache緩存速度更快。
    PHP加速插件的主要原理基本相同,就是把PHP執行後的數緩存到內存中從而避免重複的編譯過程,使其可以直接使用緩存中已編譯的代碼,從而提升速度,下降服務器負載,他們的效率是顯而易見的。每次打開一個頁面要調用數十個PHP文件,執行數萬行代碼,效率可想而知
安裝步驟:
    PHP5.5以上版本,支持Zend Opcache很簡單,只需在編譯PHP5.5的時候加上–enable-opcache就好了。其實在PHP5.5版本之前,Zend Opcache也有獨立的軟件,而且也支持低版本的PHP5.2.*、PHP5.3*、PHP5.4*。
具體的安裝命令集以下: 不使用 能夠在編輯php的時候將no改爲yes便可
cd /home/oldboy/tools/
wget -q http://pecl.php.net/get/zendopcache-7.0.5.tgz
tar xf zendopcache-7.0.5.tgz
cd zendopcache-7.0.5
/application/php/bin/phpize
./configure --enable-opcache --with-php-config=/application/php/bin/php-config
make
make install
ls -/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
cd ..
ZendOpcache下載   密碼:xkku
以上安裝都是php緩存 加速 優化相關插件 3選一便可
 

安裝數據庫緩存以及其餘擴展插件

一、安裝PHP Memcached 擴展插件
軟件說明:
    Memcached是一個開源的、支持高性能、高併發以及分佈式的內存緩存服務軟件,從名稱上看,前3個字符的單詞Mem就是內存的意思,然後面5個字符的單詞Cache就是緩存的意思,最後字符d,是daemon的意思,表明是服務端進程模式服務。
    Memcached服務分爲服務端和客戶端兩部分,其中,服務端軟件名稱如:
Memcached-*.*.tar.gz,客戶端軟件:memcache-*.*.tar.gz
    Memcached誕生於2003年,最初由LiveJoumal的Brad Fitzpatrick開發完成。Memcached是整個項目的名稱,而Memcached是服務端的主程序名,因其協議簡單,且支持高併發而被普遍使用。
場景介紹:
    在傳統場景下,多數Web應用都將數據保存在RDBMS中,www服務器從中讀取數據並在瀏覽器中顯示。但隨着數據量的增大、訪問的集中,就會出現RDBMS的負擔加劇、數據庫響應緩慢、網站打開延遲等惡劣影響
 提示:這裏咱們安裝只是安裝的客戶端至關於一個插件,還須要配置服務端才能夠生效
 
安裝步驟:
    PHP的Memcached擴展插件下載地址爲: http://pecl.php.net/package/memcache
    PHP的Memcached客戶端擴展操做步驟:
 安裝過程
cd /home/oldboy/tools/
wget -q http://pecl.php.net/get/memcache-2.2.7.tgz
tar zxf memcache-2.2.7.tgz
cd memcache-2.2.7
/application/php/bin/phpize
./configure  --enable-memcache  --with-php-config=/application/php/bin/php-config
make
make install
cd ../
 [root@web02 memcache-2.2.7]# ls /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/
memcache.so  opcache.so  xcache.so
 
 
此處就有咱們安裝的memcached.so
memcached下載 密碼:ciww
 
安裝redis
wget https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz
mv 2.2.4.tar.gz phpredis-2.2.4.tar.gz 
tar xf phpredis-2.2.4.tar.gz
cd phpredis-2.2.4
/application/php/bin/phpize 
 ./configure --enable-redis --with-php-config=/application/php/bin/php-config
make
make install
ll /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/
提示:安裝的memcached和redis都只是客戶端,還須要配置服務端
 

安裝PDO_MYSQL擴展模塊

1.PDO_MYSQL擴展插件說明
    PDO擴展爲PHP訪問數據庫定義了一個輕量級一致性的接口,它提供了一個數據訪問抽象層,這樣,不管使用的是什麼數據庫,均可以經過一致的函數執行查詢並獲取數據。
PDO_MYSQL下載   密碼:0flx
2.PDO_MYSQL安裝過程
    PDO_MYSQL的安裝有兩種方法:一種插件方式安裝,一種是編譯PHP時加入PDO_MYSQL支持,直接指定PHP的對應PDO_MYSQL編譯參數便可。例如:–with-pdo-mysql=mysqlnd,同時PHP的環境也能夠不安裝MySQL軟件,直接指定以下參數–with-mysql=mysqlnd便可讓PHP支持鏈接MySQL數據庫。
 
PHP5.3安裝步驟
cd /home/oldboy/tools
wget -q http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar xf PDO_MYSQL-1.0.2.tgz  
cd PDO_MYSQL-1.0.2/
/application/php/bin/phpize
./configure  --with-php-config=/application/php/bin/php-config --with-pdo-mysql=/application/mysql
[root@web02 tools]# cd php-5.5.32/ext/pdo_mysql/
[root@web02 pdo_mysql]# ls
CREDITS              mysql_statement.o
config.m4            package2.xml
config.w32           pdo_mysql.c
get_error_codes.php  pdo_mysql.lo
mysql_driver.c       pdo_mysql.o
mysql_driver.lo      php_pdo_mysql.h
mysql_driver.o       php_pdo_mysql_int.h
mysql_statement.c    php_pdo_mysql_sqlstate.h
mysql_statement.lo   tests
 php5.5 pdo_mysql擴展插件安裝方法
cd /home/oldboy/tools/php-5.5.32/ext/pdo_mysql/
/application/php/bin/phpize
./configure  --with-php-config=/application/php/bin/php-config --with-pdo-mysql=/application/mysql
make
make install
ll /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/
企業環境直接編譯php直接加--whith-pdo-mysql=
 

安裝其餘的PHP擴展插件模塊

安裝圖像處理程序及imagick 擴展模塊

1.安裝ImageMagick圖像軟件

    ImageMagick是一套功能強大、文檔並且免費的工具集和開發包,能夠用來讀、寫和處理超過89種基本格式的圖片文件,包括流行的TIFF,JPEG,GIF、PNG、PDF以及PhotoCD等。利用ImageMagick,你能夠根據Web應用程序的須要動態生成圖片,還能夠對一個(或一組)圖片進行改變大小、旋轉、銳化、減色或增長特效等操做。
 
ImageMagick的常見功能:
一、將圖片從一個格式轉換到另外一個格式,包括直接轉換圖標。
二、能夠改變圖片尺寸。旋轉、銳化(sharpen)、減色、設置圖片特效。
三、對圖片設置各類尺寸縮略圖
四、將圖片設置爲能夠適應於Web背景的透明圖片
五、將一組圖片做成gif動畫,直接convert
六、將幾張圖片作成一張組合圖片
七、在一個圖片上寫字或畫圖形,帶文字陰影和邊框渲染
八、給圖片加邊框或框架
九、取得一些圖片的特性信息
它幾乎包括了gimp能夠實現的全部常規插件功能,甚至包括各類曲線參數的渲染功能。
ImageMagick下載    密碼:nx7r
提示:ImageMagick只是插件須要的圖像處理軟件,安裝ImageMagick不會生產.so,由於不是插件只是一個軟件
ls -ImageMagick-6.7.9-9.tar.xz
tar xf ImageMagick-6.7.9-9.tar.xz
cd ImageMagick-6.7.9-9
./configure
make && make install
cd ../
2.安裝imagick php擴展插件
    imagick插件工做須要ImageMagick軟件的支持,因此,必需要先安裝ImageMagick,不然會出現報錯等一系列問題。
    imagick插件是一個能夠供PHP調用ImageMagick功能的擴展模塊。使用這個擴展可使PHP具有和ImageMagick相同的功能。裝了ImageMagick圖像程序後,再裝PHP的擴展imagick插件,才能使用ImageMagick提供的api來進行圖片的建立與修改、壓縮等操做。由於他們都集成在了imagick這個PHP擴展中。
 
 imagick-2.3.0.tgz版本過低了,不支持php5.5,
須要ImageMagick-6.7.9-9.tar.xz的支持,所以,注意前後順序。
imagick下載  密碼:ise8
tar zxf imagick-3.1.0.tgz
cd imagick-3.1.0
/application/php/bin/phpize
./configure --with-php-config=/application/php/bin/php-config
make
make install
ll /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/
#會在此處顯示一個imagick.so

配置Memcached/pdo_mysql/imagick模塊生效

1.修改PHP的配置文件php.ini
    能夠在php.ini修改參數。也能夠在後面直接添加。咱們直接添加便可
 vim /application/php/lib/php.ini
 716 ; extension_dir = "./"
 717 ; On windows:
 718 ; extension_dir = "ext"
能夠在最後一行
extension_dir = "/application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/"
#此處參數就是剛剛咱們查看模塊的地址
extension = memcache.so
extension = pdo_mysql.so
extension = imagick.so
查看生效狀況:也可使用phpinfo.php
[root@web02 ~]#  /application/php/bin/php -m|egrep "memcache|pdo_mysql|imagick"   
imagick
memcache
pdo_mysql
 
提示:pdo_mysql在php5.5已經安裝,若是此處報錯。建議在配置文件刪除pdo_mysql這個模塊
phpinfo會出現幾個模塊

 

 
錯誤提示:動態鏈接庫有問題
 
解決方法:
1.製做軟鏈接
ln -s /application/mysql-5.5.32/lib/libmysqlclien.so.18 /usr/lib64/libmysqlclient.so.18
2.或者將/usr/lib64放到/etc/ld.so.conf
[root@web02 ~]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/lib64
[root@web02 ~]# ldconfig   刷新

配置eAccelerator插件生效並優化參數

1.配置eAccelerator緩存目錄
[root@web02 ~]# mkdir -p /tmp/eaccelerator
#此目錄能夠用tmfs內存文件系統或者SSD固態硬盤來存儲
[root@web02 ~]# chown -R www.www /tmp/eaccelerator
#此處用戶是nginx的用戶
2.配置eAccelerator參數
 cat >> /application/php/lib/php.ini<<EOF
[eaccelerator]
extension=eaccelerator.so
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
EOF
eaccelerator配置參數詳解
eAccelerator參數 解釋說明
[eaccelerator] 開始eAccelerator加速模塊配置
extension=eaccelerator.so 加載eAccelerator加速模塊,路徑至關於extension_dir的配置
eaccelerator.shm_size=」64″ 存儲緩存數據的共享內存大小,若是爲0,則最大值看內核配置/proc/sys/kermel/shmmax。
eaccelerator.cache_dir=」/tmp/eaccelerator」 磁盤緩存存儲路徑,緩存內容爲precompiled sode、session data、content和user entnes。默認路徑爲「/tmp/eacclerator」
eaccelerator.enable=」1″ eAccelerator緩存生效開關,1爲默認,即生效。0爲關閉,即不生效
eaccelerator.optimizer=」1″ 加速PHP代碼執行速度,1爲默認值表示激活,0爲不激活。用於緩存前的代碼加速。
eaccelerator.check_mtime=」1″ 檢查緩存修改時間決定代碼是否須要從新編譯。1爲激活,是默認值
eaccelerator.debug=」0″ 緩存加速調試。0爲關閉,1爲打開,打開後能夠看到緩存命中信息。
eaccelerator.filter=」」 設置對象是否緩存規則,控表示不設定。
eaccelerator.shm_max=」0″ 能夠被放置的緩存最大值,0是不限制
eaccelerator.shm_ttl=」3600″ 緩存文件的生存週期(單位秒)
eaccelerator.shm_prune_period=」3600″ 當共享空間不夠時,從共享內存移除老數據的時間週期。
eaccelerator.shm_only=」0″ 是否容許緩存數據到磁盤,0爲容許,可是對於session data and content caching無影響
eaccelerator.compress=」1″ 是否開啓壓縮,1爲開啓
eaccelerator.compress_level=」9″ 壓縮級別,9爲最高
php5.5 沒法安裝eAcelerator 因此咱們沒法查看。若是安裝成功可使用命令查看
[root@web02 ~]# /application/php/bin/php -v
出現eAccelerator版本信息爲安裝成功
phpinfo 能夠看到以下信息
 
 
3.使用tmpfs優化eAccelerator
    tmpfs是一種基於內存的文件系統,使用tmpfs做爲數據臨時存儲一般比本地硬盤快不少,此方法適用於臨時使用的各種緩存場景。例如:上傳圖片時不少軟件默認在/tmp下臨時緩存切圖、存放session數據,則可讓/tmp使用tmpfs文件系統來加快訪問效率。
操做以下:
[root@web02 ~]# mkdir /tmp/www.abcdocker.com
[root@web02 ~]# mount -t tmpfs -o size=16m tmpfs /tmp/www.abcdocker.com
#建立16M大小的tmpfs類型文件系統掛載到/tmp/www.abcdocker.com
tmpfs是一種基於內存的文件系統。
[root@web02 ~]# df -h  #檢查掛載狀況
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       6.6G  4.2G  2.1G  67% /
/dev/sda1       190M   36M  145M  20% /boot
tmpfs            16M     0   16M   0% /tmp/www.abcdocker.com
提示:使用tmpfs能夠將訪問磁盤改成訪問內存
永久掛載設置
[root@web02 ~]# tail -1 /etc/fstab    
tmpfs /tmp/www.abcdocker.com  tmpfs   size=16m        0 0
[root@web02 ~]# umount /tmp/www.abcdocker.com/
[root@web02 ~]# grep www /proc/mounts 
[root@web02 ~]# mount -a   #刷新fstab
[root@web02 ~]# grep www /proc/mounts 
tmpfs /tmp/www.abcdocker.com tmpfs rw,relatime,size=16384k 0 0
案例:用戶上傳圖片到nginx,nginx 會在/tmp/下面切割圖片,致使磁盤IO偏高。
解決方案: 可使用tmpfs 將內存做爲臨時硬盤進行設置

配置xcache插件加速

1.xcache.ini參數說明
    xcache軟件的解壓目錄xcache-3.2.0下存在一個名爲xcache.ini的配置文件,即爲xcache的配置文件。參數說明以下:
xcache配置文件參數 解釋說明
[xcache-common]
extension = xcache.so
加載xcache.so,路徑相對於extension_dir的配置。自3.0版本開始再也不使用zend_extension加載xcache的方式
[xcache.admin]
xcache.admin.enable_auth = On
激活管理員認證
xcache.admin.user = 「mOo」
xcache.admin.pass = 「md5 encrypted password」
執行xcache管理員用戶名和密碼,密碼根據md5加密產生,留空表示禁止管理頁面
[xcache] 開始xcache緩存參數配置段,下面全部的初始值即爲默認值,除非明確說明。
xcache.shm_scheme =        「mmap」 設置XCache如何從系統分配共享內存
xcache.size  =               60M 0爲禁止緩存,非0則啓用緩存。須要注意系統所容許的mmap最大值
xcache.count =                 1 指定將cache切分紅多少塊,官方推薦設置爲服務器cpu的數量**
grep-c processor /proc/cpuinfo
xcache.slots =                8K 只是做爲bash個數的參考值,緩衝超過這個個數的內容沒有任何問題
xcache.ttl   =                 0 設置cache對象的生存期TTL(time to live)
0爲永不過時
xcache.gc_interval =           0 回收期掃描過時的對象回頭內存空間的間隔,0爲不掃描,其餘值的單位是
xcache.var_size  =            4M
xcache.var_count =             1
xcache.var_slots =             8K
xcache.var_slots =             0
xcache.var_gc_interval =  300
這幾個值和上面的幾個相似,只不過用於變量緩存,而不是opcode緩存
xcache.readonly_protection = Off 若是啓用了該參數,將會略微下降性能,但會提升必定的安全係數,這個選項對於
xcache.mmap_path = /dev/zero 無效
xcache.mmap_path =    「/dev/zero」 對於*nix,xcache.mmap_path是一個文件路徑而非目錄。若是要啓用該參數 請使用「/tmp/xcache」這樣的路徑,而是「/dev/*」若是開啓了xcache.readonly_protection參數,不一樣進程組的PHP將不會共享同一個/tmp/xcache路徑
xcache.coredump_directory =   「」 當XCache crash後,是否把數據保存到指定路徑
xcache.disable_on_crash =    Off 當xcache發生crash時,自動關閉xcache緩存
有關更多參數說明請看配置文件對應註釋說明或參考官方文檔:
 
2.操做
由於xcache已經提供好配置文件咱們追加到php.ini便可
[root@web02 xcache-3.2.0]# cat xcache.ini >>/application/php/lib/php.ini 
3.檢查XCache加速狀況
[root@web02 ~]# /application/php/bin/php -v
PHP 5.5.32 (cli) (built: May 24 2016 13:55:46) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
    with XCache v3.2.0, Copyright (c) 2005-2014, by mOo
    with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo
 
提示:eAccelerator和xcache在php中只能有一個不然會出現error
修改完成後必需要重啓PHP,不然不生效
 
phpinfo顯示以下
 
 
4.配置Web界面查看XCache緩存加速信息
    XCache支持Web界面管理,使用web界面生產md5地址以下:
http://xcache.lighttpd.net/demo/cacher/mkpassword.php 經過輸入字符串生產Xcache管理員的密碼,這裏使用MD5sum生成明文密碼。
[root@web02 xcache-3.2.0]# echo -n "123456"|md5sum 
e10adc3949ba59abbe56e057f20f883e  -
修改配置php.ini,在xcache.admin標籤段修改
[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "abcdocker"    #此處是用戶名
xcache.admin.pass = "e10adc3949ba59abbe56e057f20f883e"
#此處是md5加密的密碼路徑
提示:要求密碼必需要使用md5加密
 
而後複製xcache軟件下面的緩存加速管理PHP程序到站點目錄下:
[root@web02 xcache-3.2.0]# cp -a htdocs/ /application/nginx/html/blog/xadmin
[root@web02 xcache-3.2.0]# chown -R www.www /application/nginx/html/blog/xadmin
[root@web02 xcache-3.2.0]# pkill php-fpm
[root@web02 xcache-3.2.0]# /application/php/sbin/php-fpm
能夠直接在瀏覽器上輸入:域名/IP/xadmin 就能夠訪問
 
 
進入xcache界面
 
 
 
 若是咱們沒有設置時區,會出現警告,解決方法以下 
修改時區
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Chongqing
去掉註釋,修改地址
修改完須要重啓
 

配置ZendOpcache參數

在php.ini的最後面加入下面幾行:
[opcache]
zend_extension=/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/opcache.so
;extension=opcache.so
opcache.memory_consumption=32   
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=1000  
opcache.revalidate_freq=60   
opcache.fast_shutdown=1
opcache.enable_cli=1
opcache參數說明
opcache參數 解釋說明
opcache.memory_consumption=32 Opcache共享內存空間大小,用於存放precompiled PHP code,默認爲64,單位爲Mbytes
opcache.interned_strings_buffer=8 默認值爲4,interned strings內存的數量,單位是M
opcache.max_accelerated_files=1000 默認值是2000,Opcache哈希表的key的最大數量
opcache.revalidate_freq=60 默認值2,檢查文件時間戳的頻率,用於共享內存分配的變化。
opcache.fast_shutdown=1 默認值爲0,若是激活,一個快速的關閉隊列獎盃用來加速代碼
opcache.enable_cli=1 默認值爲0,激活PHP CLI的OPcache,用於測試和調試
更多參數說明:
[root@web02 zendopcache-7.0.5]# cd zendopcache-7.0.5
[root@web02 zendopcache-7.0.5]# less README 
再次提示:
ZendOPcache是PHP官方的新一代的緩存加速軟件,php5.5之前能夠用ZendOPcache軟件以插件擴展的方式安裝,從PHP5.5版本開始整合到PHP軟件裏,編譯時只須要指定一個參數便可,例如:–enable-opcache
 
 
phpinfo顯示以下信息
 
 

PHP指定MySQL的編譯參數帶來的問題

    若是咱們再編譯的時候指定了–with-mysql=mysqlnd和–with-pdo-mysql=mysqlnd的參數進行編譯,例如:
./configure \
--prefix=/application/php5.5.32 \
--with-mysql=/application/mysql/ \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir=/usr/local/libiconv \
.....省略其餘參數
 
則再生產中可能會遇到socket鏈接問題,解決方法是在php.ini裏添加以下命令
pdo_mysql.default_socker=/application/php5.5.32/tmp/mysql.sock

生成環境PHP擴展插件的安裝建議

1.PHP的安裝插件表格列表
 
 2.生成環境查看的安裝建議
(1)對於功能性插件,若是業務產品不須要使用,能夠暫時不考慮安裝,例如:PDO_MYSQL\memcached\imagick等。若是不清楚是否須要,仍是最好裝上,有備無患。
(2)對於性能優化插件,eAccelerator、xcache、ZendOPcache、APC能夠安裝任一種,具體狀況看業務需求,在選擇時最好能搭建相關環境進程壓力測試,而後根據實際測試結果來選擇,用數聽說話。
 
3.PHP加速插件的測試結果對比
 
針對PHP加速器比較結果進行總結
1.經過測試得出eAccelerator在請求時間和內存佔用綜合方面是最好的
2.經過測試得出使用加速器比無加速器的請求時間快了3倍左右
3.經過各個官方觀察,Xcache是更新最快的,說明它是最有發展的。
 
那咱們到底用哪一個加速器呢?
首先,用必定比不用好,其次每一個加速器還有一些能夠優化的參數,因此要根據你的系統環境而定,此外,xcache和zendopcache這兩款加速器的潛力仍是很大的。
 

出圖工具彙總

RRDTOOLS、gnuplot、EXCELL、出趨勢圖的本領RRDTOOLS、gnuplot能夠被SHELL、PYTHON,PHP使用。
    固然如今不少開發程序均可以封裝好的第三方出圖,highchar等。
相關文章
相關標籤/搜索