让PHP7达到最高性能的几个Tips

标签: PHP | 发表时间:2015-12-13 22:13 | 作者:Laruence
出处:http://www.blogread.cn/it/

标签:   PHP7

  PHP7已经发布了,  作为PHP10年来最大的版本升级, 最大的性能升级, PHP7在多放的测试中都表现出很明显的性能提升, 然而, 为了让它能发挥出最大的性能, 我还是有几件事想提醒下.

PHP7 VS PHP5.6

1. Opcache

记得启用Zend Opcache, 因为PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快, 所以之前测试时期就发生了有人一直没有启用Opcache的事情. 启用Opcache非常简单, 在php.ini配置文件中加入:

zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1"

2. 使用新的编译器

  使用新一点的编译器, 推荐GCC 4.8以上, 因为只有GCC 4.8以上PHP才会开启Global Register for opline and execute_data支持, 这个会带来5%左右的性能提升(Wordpres的QPS角度衡量)

  其实GCC 4.8以前的版本也支持, 但是我们发现它支持的有Bug, 所以必须是4.8以上的版本才会开启这个特性.

3.  HugePage

  我之前的文章也介绍过: 让你的PHP7更快之Hugepage , 首先在系统中开启HugePages, 然后开启Opcache的huge_code_pages.

  以我的CentOS 6.5为例, 通过:

$sudo sysctl vm.nr_hugepages=512

分配512个预留的大页内存:

$ 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

  这样一来, PHP会把自身的text段, 以及内存分配中的huge都采用大内存页来保存, 减少TLB miss, 从而提高性能.

4. Opcache file cache

开启Opcache File Cache(实验性),  通过开启这个, 我们可以让Opcache把opcode缓存缓存到外部文件中, 对于一些脚本, 会有很明显的性能提升.
  在php.ini中加入:

opcache.file_cache=/tmp

  这样PHP就会在/tmp目录下Cache一些Opcode的二进制导出文件, 可以跨PHP生命周期存在.

5. PGO

我之前的文章: 让你的PHP7更快(GCC PGO) 也介绍过, 如果你的PHP是专门为一个项目服务, 比如只是为你的Wordpress, 或者drupal, 或者其他什么, 那么你就可以尝试通过PGO, 来提升PHP, 专门为你的这个项目提高性能.

具体的,  以wordpress 4.1为优化场景.. 首先在编译PHP的时候首先:

$ make prof-gen

然后用你的项目训练PHP, 比如对于Wordpress:

$ sapi/cgi/php-cgi -T 100 /home/huixinchen/local/www/htdocs/wordpress/index.php >/dev/null

也就是让php-cgi跑100遍wordpress的首页, 从而生成一些在这个过程中的profile信息.

最后:

$ make prof-clean
$ make prof-use && make install

这个时候你编译得到的PHP7就是为你的项目量身打造的最高性能的编译版本.

暂时就这么多吧, 以后想起来再加, 欢迎大家尝试, thanks


Comments

Copyright © 2010 风雪之隅 版权所有, 转载务必注明. 该Feed只供个人使用, 禁止未注明的转载或商业应用. 非法应用的, 一切法律后果自负. 如有问题, 可发E-mail至my at laruence.com.(Digital Fingerprint: 73540ba0a1738d7d07d4b6038d5615e2)


您可能还对下面的文章感兴趣:

  1. PHP7 VS HHVM (WordPress) [2014-12-29 00:02:16]

相关 [php7 性能 tips] 推荐:

让PHP7达到最高性能的几个Tips

- - IT技术博客大学习
  PHP7已经发布了,  作为PHP10年来最大的版本升级, 最大的性能升级, PHP7在多放的测试中都表现出很明显的性能提升, 然而, 为了让它能发挥出最大的性能, 我还是有几件事想提醒下.. 记得启用Zend Opcache, 因为PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快, 所以之前测试时期就发生了有人一直没有启用Opcache的事情.

Cassandra性能优化的一些小tips

- - 邓的博客
最近,datastax的开发博客上发了一篇文章 How not to benchmark Cassandra (不要这样压测Cassandra),文章说了压测Cassandra时应该避免的几个地方. 其实,对于正常使用情况下提升Cassandra的性能,避免某些瓶颈,里面的有些tips还是非常有用的,所以摘录出来,本文并非原文翻译,而是选择了其中几点,并总结了自己优化Cassandra的一些实践,如果有需要,请直接查看链接.

hive 优化 tips

- - CSDN博客推荐文章
一、     Hive join优化. 也可以显示声明进行map join:特别适用于小表join大表的时候,SELECT /*+ MAPJOIN(b) */ a.key, a.value FROM a join b on a.key = b.key. 2.     注意带表分区的join, 如:.

mysql tips两则

- - jackyrong
mysql tips两则,都可以用来查看当前执行的语句. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

Android开发Tips

- - CSDN博客推荐文章
欢迎Follow我的 GitHub, 关注我的 CSDN.. 介绍一些, 在Android开发中, 会经常使用的小知识点.. submodule与git可以保持实时同步. 导入, 路径多于一个, 前面不添加冒号(:).. 使用PackageManager.. // 检查App是否安装 private boolean appInstalledOrNot(String uri) {.

HTML 5中的tips两则

- - jackyrong
1 input type中的required属性,支持正则表达式,比如.  

数据库的优化tips

- - CSDN博客数据库推荐文章
数据库   TIPS::. 1、用于记录或者是数据分析的表创建时::使用Id作为主键,1,2,3...表示消息条数,用户账号id用于做外键,一个用户对应唯一个accountId.                                     一个accountId可以对应多条数据;. 2、创建索引::    例如需要根据注册版本号和注册游戏ID来查询另外一些字段的时候,就可以根据版本号和游戏ID来创建索引::相当于就是根据查询条件来建索引;.

tsung: 好文: PHP performance tips - Google Webmaster

- 小汐 - Planet DebianTW
Google 提供的 PHP 效能調校(Optimize performance)的幾點原則, 詳細可見此文:. 原文: Let's make the web faster - PHP performance tips. 作者: Eric Higgins, Google Webmaster. 此文內容很短, 講得都是大方向, 主題內容如下:.

OSX Lion Tips- 調校 Finder小技巧

- Jona - ApplePlan
作為整個 OSX靈魂中樞的 Finder, 身為使用者的你我當然希望他能夠協助我們將整個系統的檔案架構管理的有條有理. 剛從 OSX 10.6 Snow Leopard升級到 Lion的朋友們, 可能對於將 “Less is more"精神發揮到極致的 OSX Lion Finder有些不習慣. 今天艾瑞克探員就要和大家分享幾個調整 Finder的小技巧!.

Tips: 开启 Ubuntu 软件同步功能

- Quantum - Wow! Ubuntu
Ubuntu 11.10 Oneiric Ocelot 已于昨天正式发布,在之前的文章中我们提到过,该版本中的 Ubuntu Software Center 采用了全新的界面,并提供了一个非常实用的功能,把 OneConf 整合进了去,这样你就可以在两台电脑之间同步安装过的软件. OneConf 的原理是这样的,系统会自动记录安装过的软件信息并存储到你的 Ubuntu One 空间里面,当其它电脑需要的时候会从你的 Ubuntu One 里获取这些信息并同步安装过的软件,详细介绍见 Ubuntu Wiki.