原文地址:
http://www.laruence.com/2015/12/04/3086.html
这里只做博客的搬运工, 方便自己查找查看.
1. Opcache
记得启用Zend Opcache
, 因为PHP7
即使不启用Opcache
速度也比PHP-5.6
启用了Opcache
快, 所以之前测试时期就发生了有人一直没有启用Opcache
的事情. 启用Opcache
非常简单, 在php.ini
配置文件中加入:
1 | zend_extension=opcache.so |
2. 使用新的编译器
使用新一点的编译器, 推荐GCC 4.8
以上, 因为只有GCC 4.8
以上PHP才会开启Global Register for opline and execute_data
支持, 这个会带来5%
左右的性能提升(Wordpres
的QPS
角度衡量)
其实GCC 4.8
以前的版本也支持, 但是我们发现它支持的有Bug
, 所以必须是4.8
以上的版本才会开启这个特性.
1 | [root@caoxianliang ~]# gcc -v |
3. HugePage
我之前的文章也介绍过: 让你的PHP7更快之Hugepage , 首先在系统中开启HugePages
, 然后开启Opcache
的huge_code_pages
.
以我的CentOS 6.5
为例, 通过:
1 | [root@caoxianliang ~]# sudo sysctl vm.nr_hugepages=512 |
分配512
个预留的大页内存:
1 | [root@caoxianliang ~]# cat /proc/meminfo | grep Huge |
然后再php.ini
中加入:
1 | opcache.huge_code_pages=1 |
这样一来,
PHP
会把自身的text
段, 以及内存分配中的huge
都采用大内存页来保存, 减少TLB miss
, 从而提高性能.
4. Opcache file cache
开启Opcache File Cache
(实验性), 通过开启这个, 我们可以让Opcache
把opcode
缓存缓存到外部文件中, 对于一些脚本, 会有很明显的性能提升.
- 在
php.ini
中加入:
1 | opcache.file_cache=/tmp |
这样PHP
就会在/tmp
目录下Cache
一些Opcode
的二进制导出文件, 可以跨PHP
生命周期存在.
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 | make prof-clean |
这个时候你编译得到的PHP7
就是为你的项目量身打造的最高性能的编译版本.