來(lái)源:鳥哥/惠新宸
鏈接:http://www.laruence.com/2015/12/04/3086.html
PHP7已經(jīng)發(fā)布了, 作為PHP10年來(lái)最大的版本升級(jí), 最大的性能升級(jí), PHP7在多放的測(cè)試中都表現(xiàn)出很明顯的性能提升, 然而, 為了讓它能發(fā)揮出最大的性能, 我還是有幾件事想提醒下.
1. Opcache
記得啟用Zend Opcache, 因?yàn)镻HP7即使不啟用Opcache速度也比PHP-5.6啟用了Opcache快, 所以之前測(cè)試時(shí)期就發(fā)生了有人一直沒有啟用Opcache的事情. 啟用Opcache非常簡(jiǎn)單, 在php.ini配置文件中加入:
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1"
2肌似、使用新的編譯器
使用新一點(diǎn)的編譯器劳较,推薦GCC 4.8以上斥季,因?yàn)橹挥蠫CC 4.8以上PHP才會(huì)開啟Global Register for opline and execute_data支持械念,這個(gè)會(huì)帶來(lái)5%左右的性能提升(Wordpres的QPS角度衡量)
其實(shí)GCC 4.8以前的版本也支持望迎,但是我們發(fā)現(xiàn)它支持的有Bug朽们,所以必須是4.8以上的版本才會(huì)開啟這個(gè)特性娄周。
3戳晌、HugePage
我之前的文章也介紹過(guò): 讓你的PHP7更快之Hugepage ,首先在系統(tǒng)中開啟HugePages,然后開啟Opcache的huge_code_pages竞滓。
以我的CentOS 6.5為例咐吼,通過(guò):
$sudo sysctl vm.nr_hugepages=512
分配512個(gè)預(yù)留的大頁(yè)內(nèi)存:
$ cat /proc/meminfo ?| grep Huge
AnonHugePages: ? ?106496 kB
HugePages_Total: ? ? 512
HugePages_Free: ? ? ?504
HugePages_Rsvd: ? ? ? 27
HugePages_Surp: ? ? ? ?0
Hugepagesize: ? ? ? 2048 kB
然后在php.ini中加入:
opcache.huge_code_pages=1
這樣一來(lái),PHP會(huì)把自身的text段商佑,以及內(nèi)存分配中的huge都采用大內(nèi)存頁(yè)來(lái)保存锯茄,減少TLB miss,從而提高性能茶没。
4肌幽、Opcache file cache
開啟Opcache File Cache(實(shí)驗(yàn)性),通過(guò)開啟這個(gè)抓半,我們可以讓Opcache把opcode緩存緩存到外部文件中喂急,對(duì)于一些腳本,會(huì)有很明顯的性能提升笛求。
在php.ini中加入:
opcache.file_cache=/tmp
這樣PHP就會(huì)在/tmp目錄下Cache一些Opcode的二進(jìn)制導(dǎo)出文件廊移,可以跨PHP生命周期存在。
5涣易、PGO
我之前的文章: 讓你的PHP7更快(GCC PGO) 也介紹過(guò)画机,如果你的PHP是專門為一個(gè)項(xiàng)目服務(wù),比如只是為你的Wordpress新症,或者drupal步氏,或者其他什么,那么你就可以嘗試通過(guò)PGO徒爹,來(lái)提升PHP荚醒,專門為你的這個(gè)項(xiàng)目提高性能。
具體的隆嗅,以wordpress 4.1為優(yōu)化場(chǎng)景界阁。首先在編譯PHP的時(shí)候首先:
$ make prof-gen
然后用你的項(xiàng)目訓(xùn)練PHP,比如對(duì)于Wordpress:
$ sapi/cgi/php-cgi -T 100 /home/huixinchen/local/www/htdocs/wordpress/index.php >/dev/null
也就是讓php-cgi跑100遍wordpress的首頁(yè)胖喳,從而生成一些在這個(gè)過(guò)程中的profile信息泡躯。
最后:
$ make prof-clean
$ make prof-use
這個(gè)時(shí)候你編譯得到的PHP7,就是為你的項(xiàng)目量身打造的最高性能的編譯版本丽焊。