【问题标题】:Zend OPcache performance settings vs default settingsZend OPcache 性能设置与默认设置
【发布时间】:2015-02-02 16:45:25
【问题描述】:

据我了解这些设置:

opcache.validate_timestamps=0
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=3907
opcache.blacklist_filename=/blacklisted_files

应该提高性能(根据链接:123)。我实际上不确定最后 2 个,在我的情况下,“internet_strings_buffer”设置值“4”可能永远不会被填充(因此不会给出更好的结果),但“validate_timestamps”应该消除 stat() 函数开销,因此给我更好性能,但根据我对 JMeter 的测试,我无法验证这一点。每个设置单独比默认设置差。

我知道“性能设置”可能不会改善很多,但我认为它的性能应该不会更差(每个请求的差异约为 +2 毫秒)。

问题是:为什么默认设置比性能/推荐设置更好?

OPcache 是否也比较大的内存更好地处理较小的内存覆盖/删除/搜索(谈论“opcache.memory_consumption”设置)?

【问题讨论】:

    标签: php zend-framework jmeter opcache


    【解决方案1】:

    选项 2 和 3 只是间接地与性能相关,因为它们与操作码缓存的容量有关。如果您当前的使用情况符合默认值,那么除了使用 Opcache 的系统开销略有增加外,您不会看到任何实质性差异。当然,如果当前的使用情况合适,你会得到好处,因为缓存将有更大的容量,你会得到更少的缓存未命中。

    选项 4 涉及为 PHP 脚本文件名定义模式,这些文件名是易变的,因此不应被缓存。如果您禁用了时间戳验证,这一点尤其重要,因为 Opcache 不会获取此类更改。

    选项 1 确实删除了 PHP 进程的 strace 可以验证的额外 stat() 调用。使用现代 CPU,Linux 内核非常有效地缓存 inode,因此这只会节省 sub mSec 如果节点位于 VFAT 缓存中。您需要很好地构建时序测试来衡量这种差异。

    Opcache 的重用策略很差:它不会打扰。缓存会慢慢填满,填满后会全部刷新并从头开始重建。

    【讨论】:

    • 您好 TerryE,感谢您的回答,我还有一个问题:您声明如果禁用时间戳验证,选项 4 很重要,但在选项 1 中您说不会调用 stat()如果时间戳验证设置为 FALSE,则删除。那么“opcache.validate_timestamps”的真正意义是什么?
    • 不完全是,我说反了:将validate_timestamps设置为=0参数意味着stats不会被执行。请参阅源存储库中的 Opcache README file
    • 感谢您的信息。很抱歉没有尽快接受答复。
    猜你喜欢
    • 2015-02-13
    • 2012-07-16
    • 1970-01-01
    • 2012-10-03
    • 2016-04-25
    • 2016-08-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多