A-A+

亿级 pv 网站架构实战之性能压榨篇之 php 优化

2018年09月19日 服务器 暂无评论 阅读 130 views 次

升级到 php7

注意有很多函数和扩展被废弃,比如mysql相关的,有风险,做好测试再切换。

opcode 缓存

图片描述
php 5.5 之后好像就内置了吧,需要在php.ini里添加如下配置

opcache.revalidate_freq=60
opcache.validate_timestamps=1
opcache.max_accelerated_files=1000
opcache.memory_consumption=512
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1
  1. opcache.revalidate_freq
    这个选项用于设置缓存的过期时间(单位是秒),当这个时间达到后,opcache会检查你的代码是否改变,如果改变了PHP会重新编译它,生成新的opcode,并且更新缓存。
  2. opcache.validate_timestamps
    当这个选项被启用(设置为1),PHP会在opcache.revalidate_freq设置的时间到达后检测文件的时间戳(timestamp)。
  3. opcache.max_accelerated_files
    这个选项用于控制内存中最多可以缓存多少个PHP文件。
  4. opcache.memory_consumption
    你可以通过调用opcachegetstatus()来获取opcache使用的内存的总量
  5. opcache.interned_strings_buffer
    字符串opcache的复用,单位为MB
  6. opcache.fast_shutdown=1
    开启快速停止续发事件,依赖于Zend引擎的内存管理模块

php7 hugepage 的使用

Hugepage 的作用:间接提高虚拟地址和内存地址转换过程中查表的TLB缓存命中率

opcache.huge_code_pages=1

鸟哥博客详细介绍:http://www.laruence.com/2015/10/02/3069.html

代码伪编译

以thinkphp为例,它会把框架基础组件(必须用到的组件)合并压缩到一个文件中,不仅减少了文件目录查找,文件打开的系统调用。

通过stracephp-fpm子进程,可以清楚系统调用的过程,在我上面例子中有打开一个文件有12次系统调用(只是举例,我这里相对路径设置的原因导致多了两次文件查找)。如果有10个文件,那就是120次,优化的效果可能不是那么明显,但是这是一种思路。
顺便说下 set_include_path能不用就不要用,上面的demo的截图里面找不到目录就是证明。

模板编译

模板把它们自定义的语法,最后转换成php语法,这样方便解析。而不是每次都解析一遍。

xhprof 查找性能瓶颈

我的截图一直上传不成功,正好社区有这样的博客,推荐下 https://segmentfault.com/a/1190000003509917

亿级 pv 网站架构实战之性能压榨篇之前端优化

亿级 pv 网站架构实战之性能压榨篇之 nginx 优化

亿级 pv 网站架构实战之性能压榨篇之 php 优化

亿级 pv 网站架构实战之性能压榨篇之业务架构优化

亿级 pv 网站架构实战之性能压榨篇之缓存优化

亿级 pv 网站架构实战之性能压榨篇之 mysql 优化

亿级 pv 网站架构实战之性能压榨篇之服务器认知提升

Copyright © 自习教室 保留所有权利.   Theme  16KR 晋ICP备13000442号-10

用户登录