GCC PGO 适应性优化 PHP7 编译详细介绍
2017-06-05 17:00
381 查看
介绍
PGO 即 Profile-guided optimization(归档引导优化),是一种自适应优化手段,不需要对软件代码本身做出改进,即可获得性能的提升,目前已经应用于 GCC、VC++ 等常见的编译器中。一些开源项目像 Firefox 就默认使用 PGO 编译来优化性能,但是大部分软件上应用率并不高。使用 GCC PGO 编译 PHP7.0 + opcache,在阿里云 1核心 1G 内存的配置上,Wordpress 4.6.0 性能提升约 5%,Drupal 8.1.8 上则提升约 2%。 当然了,服务器配置越高,自己身参数设置的好,性能提升就会越明显。
所以,下面就来简单介绍一下如何使用 PGO 来编译 PHP7.0。个人绝对 PGO 编译最好还是应用于,PHP 升级的时候,如果在第一次编译服务器环境的时候,网站没有搭建完成,进行训练并不会有明显的性能提升。
安装
首先,按鸟哥说的,GCC 编译器越新越好,最好不要低于 GCC 4.8,虽然貌似 GCC 4 早期的时候就支持 PGO 了,反正听大神的准没错。二,下载 PHP7.0,然后
./configure一下,这里就不再重复了。
三、然后我们开始第一次编译 PHP,
make prof-gen
四、这时候再 php 目录下,
sapi/cli/php、
sapi/cgi/php-cgi和
sapi/fpm/php-fpm这个三个二进制文件就会生成,供我们进行针对性的训练
五、适应性训练,使用如下命令
sapi/cgi/php-cgi -T 100 /data/www.mf8.biz/index.php >/dev/null
就会自动对
/data/www.mf8.biz/index.php进行针对性训练,一般来说网站访问量最大的就是首页了,所以我们只要对首页文件进行训练即可。 使用 LNMP 的环境还可以用
sapi/fpm/php-fpm代替
sapi/cgi/php-cgi,获得更好的反馈。
值得说明的是,训练只能对一个网站程序有效,例如训练的 WordPress 只会对 WP 的性能进行适应性优化。如果服务器有多种网站程序,则可以使用 php_pgo_training_scripts 脚本来获得通用性的 PGO 优化。
六、清理第一次编译生成的二进制文件,输入如下命令
make prof-clean
七、根据训练反馈的想信息,进行第二次编译并进行安装,输入如下命令
make prof-use make install
注意,有些一键包,还有编译 PHP 的时候有使用 liconv 库,所以在
make prof-gen和
make prof-use都别忘记引用额外的库。
其他
针对 Oneinstack 用户,我对 upgrade_php.sh做了个小改动。使用 PHP7.0 的朋友,可以直接用这个代替
/include/upgrade_php.sh文件。然后升级 PHP,就默认有 PGO 优化了。
记得,把里面的
/data/wwwroot/mf8/index.php替换成自己的程序。
互联网+时代,时刻要保持学习,携手千锋PHP,Dream
It Possible。
更多PHP相关技术请搜索千锋PHP,做真实的自己,用良心做教育。。
相关文章推荐
- 定制ARM For Linux交叉编译工具详细介绍
- 优化mysql性能的十个参数的详细介绍
- 不要写完代码就束之高阁,适当地优化代码结构,能够为以后的开发带来许多方便,这《重构:改善既有代码的设计》就向你介绍了这方面的技巧,说得非常详细。
- Mysql 优化详细介绍
- WebRTC编译详细介绍
- Linux操作系统上编译程序的方法详细介绍
- 使用use index优化sql查询的详细介绍
- 超详细图文介绍如何制作,编译,使用静态编译库
- 详细介绍优化SQL Server 2000的设置
- WebRTC编译详细介绍
- LINUX内核编译步骤详细介绍
- Linux操作系统上编译程序的方法详细介绍
- 优化mysql的性能,详细介绍Mysql的配置my.cnf的参数
- \t\tSEO相关:关键词优化详细介绍 ( 优化 网站 访问 )
- Mysql 优化详细介绍
- LINUX内核编译步骤详细介绍
- Nginx编译参数详细介绍
- WebRTC编译详细介绍
- (转)speex详细介绍--概念、移植、编译、命令行等
- Log4j详细介绍(三)----Log4j的优化