轉鳥哥建議:讓PHP7達到最高性能的幾個建議

讓 PHP7 達到最高性能的幾個建議php

懶得排版了,伯樂在線連接:http://blog.jobbole.com/95657/api

原文出處: 惠新宸(@Laruence) 歡迎分享原創到伯樂頭條
PHP7 已經發布了,做爲PHP十年來最大的版本升級,最大的性能升級,PHP7在多放的測試中都表現出很明顯的性能提高,然而,爲了讓它能發揮出最大的性能,我仍是有幾件事想提醒下。緩存

PHP7 VS PHP5.6wordpress

  1. Opcache性能

記得啓用Zend Opcache,由於PHP7即便不啓用Opcache速度也比PHP-5.6啓用了Opcache快,因此以前測試時期就發生了有人一直沒有啓用Opcache的事情。啓用Opcache很是簡單,在php.ini配置文件中加入:測試

1
2
3
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1"優化

  1. 使用新的編譯器ui

使用新一點的編譯器,推薦GCC 4.8以上,由於只有GCC 4.8以上PHP纔會開啓Global Register for opline and execute_data支持,這個會帶來5%左右的性能提高(Wordpres的QPS角度衡量)code

其實GCC 4.8之前的版本也支持,可是咱們發現它支持的有Bug,因此必須是4.8以上的版本纔會開啓這個特性。blog

  1. HugePage

我以前的文章也介紹過: 讓你的PHP7更快之Hugepage ,首先在系統中開啓HugePages,而後開啓Opcache的huge_code_pages。

以個人CentOS 6.5爲例,經過:

1
$sudo sysctl vm.nr_hugepages=512
分配512個預留的大頁內存:

1
2
3
4
5
6
7
$ 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中加入:

1
opcache.huge_code_pages=1
這樣一來,PHP會把自身的text段,以及內存分配中的huge都採用大內存頁來保存,減小TLB miss,從而提升性能。

  1. Opcache file cache

開啓Opcache File Cache(實驗性),經過開啓這個,咱們可讓Opcache把opcode緩存緩存到外部文件中,對於一些腳本,會有很明顯的性能提高。
在php.ini中加入:

1
opcache.file_cache=/tmp
這樣PHP就會在/tmp目錄下Cache一些Opcode的二進制導出文件,能夠跨PHP生命週期存在。

  1. PGO

我以前的文章: 讓你的PHP7更快(GCC PGO) 也介紹過,若是你的PHP是專門爲一個項目服務,好比只是爲你的Wordpress,或者drupal,或者其餘什麼,那麼你就能夠嘗試經過PGO,來提高PHP,專門爲你的這個項目提升性能。

具體的,以wordpress 4.1爲優化場景。首先在編譯PHP的時候首先:

1
$ make prof-gen
而後用你的項目訓練PHP,好比對於Wordpress:

1
$ sapi/cgi/php-cgi -T 100 /home/huixinchen/local/www/htdocs/wordpress/index.php >/dev/null
也就是讓php-cgi跑100遍wordpress的首頁,從而生成一些在這個過程當中的profile信息。

最後:

1
2
$ make prof-clean
$ make prof-use
這個時候你編譯獲得的PHP7,就是爲你的項目量身打造的最高性能的編譯版本。

暫時就這麼多吧,之後想起來再加,歡迎你們嘗試,thanks。

相關文章
相關標籤/搜索