2014-12-04 50 views
3

虽然我明白这些设置:Zend的OPcache性能设置VS默认设置

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”设置)?

回答

4

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

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

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

Opcache有一个很差的重用策略:它不打扰。高速缓存缓慢填满,完全刷新并从头开始重建。

+0

嗨TerryE, 我很欣赏的答案,我有一个问题: 幽州选项4很重要,如果时间戳验证是禁用的,但在选项1你说的stat()调用不会,如果被删除时间戳验证设置为FALSE。那么什么是“opcache.validate_timestamps”的真正意义呢? – 2014-12-07 20:55:37

+1

不完全相反,我说的相反:将'validate_timestamps'设置为= 0参数意味着'stats'不会被执行。请参阅源存储库中的Opcache [README文件](https://github.com/php/php-src/blob/master/ext/opcache/README)。 – TerryE 2014-12-08 10:40:47

+0

感谢您的信息。很抱歉,不能早日接受答案。 – 2014-12-12 13:42:33