Zend OPcache性能设置与默认设置

时间:2014-12-04 17:27:34

标签: php zend-framework jmeter opcache

尽管我理解这些设置:

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 ms)。

问题是:为什么默认设置优于性能/推荐设置?

OPcache还能处理比较大的内存覆盖/删除/搜索更小的内存(谈论“opcache.memory_consumption”设置)吗?

1 个答案:

答案 0 :(得分:4)

选项2和3仅间接地与性能相关,因为它们与操作码缓存的容量有关。如果您当前的使用情况符合默认值,那么您将看不到任何重大差异,其他使用Opcache的系统开销略有增加。当然,如果当前使用不适合,您将获益,因为缓存将具有更大的容量,并且您将获得更少的缓存未命中。

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

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

Opcache的重用策略非常糟糕:它并不烦人。缓存缓慢填充,当填满时,它会完全刷新并从头开始重建。