Tal*_*boy 28 php wordpress apc opcache
我有一个m3.xlargeEC2实例,我PHP 5.5.11今天更新了.
有了这个更新,它覆盖php55-pecl-apc了php55-pecl-apcu.
在阅读和实验之后,我的理解是APC已被替换OPCache,除了可以带回来的关键值存储APCu.
在将我的配置调整到看起来合理的东西之后,在登录时使用Wordpress现在非常慢,至少300-900ms更糟糕(前端通过清漆缓存,并且工作完美...但是当你使用管理员时故意不是缓存,而是作为罪恶缓慢).
我升级时做了一系列基准测试,每个步骤的样本量很小.随着我的继续,它的恶化程度越来越差.
-->-->现在我只是闲着OPCache,没有APCu.
对于我的设置我使用最新的wordpress,一些大插件,但我不能把它们取下,因为它们很重要.幸运的是,清漆可以完成大部分工作.我的网站根目录有4个内核,16GB内存,~10k文件.我也没有真正的硬核应用程序或除了wordpress之外的任何东西,它是一个相当普通的设置.我认为这是可能有用的东西.
配置:
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=0
opcache.revalidate_path=0
opcache.save_comments=0
opcache.load_comments=0
opcache.fast_shutdown=1
opcache.enable_file_override=0
opcache.optimization_level=0xffffffff
opcache.inherited_hack=1
opcache.dups_fix=0
opcache.blacklist_filename=/etc/php-5.5.d/opcache*.blacklist
opcache.max_file_size=2M
opcache.consistency_checks=1
opcache.force_restart_timeout=180
opcache.error_log=/var/log/php-fpm/5.5/opcache.log
opcache.log_verbosity_level=1
opcache.preferred_memory_model=
opcache.protect_memory=0
Run Code Online (Sandbox Code Playgroud)
knr*_*rdk 17
现在,您正在检查每个请求更改的每个文件,这可能不是您想要的生产系统.
我通常只是禁用它(记得在进行更改后重新启动Web服务器):
opcache.validate_timestamps=0
Run Code Online (Sandbox Code Playgroud)
或者,您可以尝试将频率设置为0以外的值并保持启用状态:
opcache.validate_timestamps=1
opcache.revalidate_freq=300
Run Code Online (Sandbox Code Playgroud)
理论上,这应该只检查每5分钟的变化.
小智 7
你也有
opcache.consistency_checks=1
Run Code Online (Sandbox Code Playgroud)
根据文档说,这会降低性能.把它关掉.
opcache.consistency_checks integer如果非零,OPcache将每N个请求验证缓存校验和,其中N是此配置指令的值.这只应在调试时启用,因为它会影响性能.
小智 5
从负责将OPCache集成到PHP中的RFC:
APC可以回收旧的无效脚本的内存.APC使用内存管理器,可以回收与不再使用的脚本相关的内存; 优化器+的工作方式不同,并将此类内存标记为"脏",但从未实际回收它.一旦脏百分比超过可配置的阈值 - 优化器+重新启动自身.请注意,此行为具有稳定性优点和缺点.
我的猜测是你达到触发操作码缓存重启的阈值.
参考:https://wiki.php.net/rfc/optimizerplus#advantages_of_apc_over_optimizer