PHP Opcache 的正确使用
关键配置
- PHP opcache 配置、状态与清除
- opcache.memory_consumption=512 //内存块大小,单位是M,cli和fpm各自有一个内存块
- opcache.max_accelerated_files=100000 //内存中最多可以缓存多少个PHP文件
- opcache.max_wasted_percentage=5 //默认是5,浪费内存的百分占比,不能超过此值
- opcache.validate_timestamps=0 // =1会根据revalidate_freq设定的值检查更新代码,=0永不检查
- opcache.revalidate_freq=2 //检测php代码是否更改的间隔(秒)
注意事项
- PHP Opcache 注意事项以及调优
- 当 opcache 在某些情况下内存满时,它将擦除所有缓存条目并从空缓存开始,产生缓存击穿:许多请求同时生成相同的缓存条目。
- opcache 检测内存是否已满的三个指标:
- opcache.memory_consumption 默认为 64(MB)
- opcache.max_accelerated_files 默认为 2000 个可缓存文件,最大值为 100000
- opcache.max_wasted_percentage 默认是5,浪费内存的百分占比,不能超过此值
- 为了找到正确的配置,可以打印 opcache_get_status(false)
- oom_restarts 内存满了产生重启的次数
- last_restart_time 最后重启的时间
- current_wasted_percentage 当前浪费内存的百分占比
线上opcache.validate_timestamps=0更新代码后如何更新opcache
- 平滑重启 php-fpm
- 通过 opcache_reset () 函数
- 第三方库:gordalina.github.io/cachetool/
本作品采用《CC 协议》,转载必须注明作者和本文链接