求救,为啥PHP 开启opcache后,访问502 Bad Gateway错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求救,为啥PHP 开启opcache后,访问502 Bad Gateway错误相关的知识,希望对你有一定的参考价值。

参考技术A 应该用php5.5以上的版本开启opcache,5.4以前的版本opcache在生产环境下需要进行严格测试,因为有问题,我就遇到过5.4.x下开启opcache后phpcms不能正常安装,安装上了程序运行也有问题。。

php开启opcache

OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。

 

一、php.ini配置opchche示例

[opcache]
zend_extension=opcache.so
; 开关打开
opcache.enable=1opcache.enable_cli=1;共享内存大小, 酌情而定,单位 megabytes
opcache.memory_consumption=256      ;interned string的内存大小, 也可调
opcache.interned_strings_buffer=8;最大缓存的文件数目,命中率不到 100% 的话, 可以试着提高这个值
opcache.max_accelerated_files=4000;60s检查一次文件更新
opcache.revalidate_freq=60;打开快速关闭, 打开这个在PHP Request Shutdown的时候  会收内存的速度会提高
opcache.fast_shutdown=1;不保存文件/函数的注释
opcache.save_comments=0  ; 是否快速关闭, 打开后在PHP Request Shutdown的时候回收内存的速度会提高
opcache.fast_shutdown=1
二、部分配置参数说明
opcache.revalidate_freq 
这个配置选项用于设置缓存的过期时间,如果设置为0,每次请求时,都会检查文件是否修改,很耗资源,所以如果暂时不需要使用opcache,直接把opcache.enable设置为0即可。
opcache.validate_timestamps 
配置为1时,会根据revalidate_freq设定的值检查更新代码;设置为0时,永不检查。
当需要一次更新大量代码的时候,可以设置为0,上传全部完成后,再设置为1。避免上传代码造成系统的不稳定。
opcache.max_accelerated_files 
真实的取值是在质数集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } 中找到的第一个比设置值大的质数。
你可以运行 find . -type f -print | grep php | wc -l 这个命令来快速计算你的代码库中的PHP文件数。

 

开发模式下推荐,直接禁用opcache扩展更好

 

opcache.revalidate_freq=0

opcache.validate_timestamps=1

opcache.max_accelerated_files=3000

opcache.memory_consumption=192

opcache.interned_strings_buffer=16

opcache.fast_shutdown=1

 

 

多台机器集群模式或者代码更新频繁时推荐,可以兼顾性能,方便代码更新

 

opcache.revalidate_freq=300

opcache.validate_timestamps=1

opcache.max_accelerated_files=7963

opcache.memory_consumption=192

opcache.interned_strings_buffer=16

opcache.fast_shutdown=1

 

 

稳定项目推荐,性能最好

 

opcache.revalidate_freq=0

opcache.validate_timestamps=0

opcache.max_accelerated_files=7963

opcache.memory_consumption=192

opcache.interned_strings_buffer=16

opcache.fast_shutdown=1

 

以上是关于求救,为啥PHP 开启opcache后,访问502 Bad Gateway错误的主要内容,如果未能解决你的问题,请参考以下文章

php 开启opcache

性能加速 - 开启opcache

[PHP] - 性能加速 - 开启opcache

php开启opcache

Lnmp下PHP开启Opcache缓存,PHP开启缓存优化方法

php开启opcache加速