日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

深度优化LNMP之PHP

發布時間:2025/3/15 php 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度优化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程序請求的,整個流程如下: 1、Apache接收客戶端的PHP程序請求并根據規則過濾。 2、Apache將PHP程序請求傳遞給PHP處理模塊libphp5.so 3、PHP引擎定位磁盤上的PHP文件,并將其加載到內存中解析 4、PHP處理模塊libphp5.so將PHP源代碼編譯成為opcode 5、PHP處理模塊libphp5.so執行opcode,然后把opcode緩存起來 6、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緩存加速軟件??梢圆榭聪嚓P資料文檔:http://pecl.php.net/packages.php和http://pecl.php.net/package/APC 首選xcache的原因如下: 1.經過測試xcache效率更好,更快 2.xcache軟件開發社區更活躍。 3.支持更好版本的PHP,例如PHP5.5、PHP5.6 次選eaccelerator的原因如下: 1、安裝及配置參數更簡單,加速效果也不錯 2、文檔資料較多,但官方對軟件的更新很慢,社區不活躍 3、僅適合PHP版本5.4以下的程序 選擇ZendOpcache的原因如下: 1.是PHP官方研發的新一代緩存加速軟件,以后的發展潛力可能會很好,PHP5.5以前的版本可以通過ZendOpcode軟件以插件擴展的方式安裝,從PHP5.5版本開始已經整合到PHP軟件里了,編譯時只需指定一個參數即可,例如:–enable-opcache 2、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官方的說明:http://php.net/manual/en/install.pecl.phpize.php 安裝PHP xcache緩存加速模塊 插件說明: XCache是一個開源的、又快又穩定的PHP opcode緩存器/優化器。其項目leader曾經是Lighttpd的開發成員之一。XCache通過把對PHP程序編譯后的數據(opcode)緩存到共享內存里,避免讓相同的程序重復編譯。用戶請求相同的PHP程序時,可以直接使用緩存中已編譯好的數據,從而提高PHP的訪問速度,通??梢蕴嵘?~5倍,并大幅降低服務器負載開銷。 很多公司在使用XCache,它已經能在大流量/高負載的生產環境溫度運行,與同類型的opcode緩存器相比在各個方面都更勝一籌。例如:社區活躍、快速開發、能夠快速跟進PHP的版本更新等。 當前穩定版本為3.1x (全面支持PHP5.1~5.5)和3.2 (PHP5.1~5.5) 有關XCache軟件詳情參考: http://xcache.lighttpd.net/?或http://xcache.lighttpd.net/wiki/Introduction 安裝步驟: 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?-l?/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
cd?..
ZendOpcache下載 ??密碼:xkku
以上安裝都是php緩存 加速 優化相關插件 3選一即可

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

1、安裝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的常見功能: 1、將圖片從一個格式轉換到另一個格式,包括直接轉換圖標。 2、可以改變圖片尺寸。旋轉、銳化(sharpen)、減色、設置圖片特效。 3、對圖片設置各種尺寸縮略圖 4、將圖片設置為可以適應于Web背景的透明圖片 5、將一組圖片作成gif動畫,直接convert 6、將幾張圖片做成一張組合圖片 7、在一個圖片上寫字或畫圖形,帶文字陰影和邊框渲染 8、給圖片加邊框或框架 9、取得一些圖片的特性信息 它幾乎包括了gimp可以實現的所有常規插件功能,甚至包括各種曲線參數的渲染功能。 ImageMagick下載?? ?密碼:nx7r 提示:ImageMagick只是插件需要的圖像處理軟件,安裝ImageMagick不會生產.so,因為不是插件只是一個軟件 ls?-l?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緩存
有關更多參數說明請看配置文件對應注釋說明或參考官方文檔: http://xcache.lighttpd.net/wiki/XcacheIni 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等。 老男孩老師推薦的幾款畫圖工具 感謝老男孩老師無私分享 筆者QQ:604419314

總結

以上是生活随笔為你收集整理的深度优化LNMP之PHP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。