将Symfony与OPcache一起使用 - 完全缓存

时间:2016-07-20 12:57:49

标签: php caching symfony opcache

我的一些网站托管在激活了OPcache的服务器上,这大大提高了性能,但我遇到了缓存快速增加的问题。然后在某些页面上我倾向于得到错误502,当然 - 这是一个主要问题。解决这个问题的唯一方法是手动清除缓存但只是很快就会启动缓存。我的托管服务提供商告诉我,他们尝试了一些更改(这对我没有帮助),并且我不能指望OPcache很快就会增加内存。 当我尝试禁用OPcache时,服务器的负载太高,所以我需要继续使用它。

我在那里运行的最大网站是基于Symfony3。其他网站只是相对较小的页面,但其中一个 - 我也遇到问题 - 基于Silex(Symfony微框架)。

有什么方法可以直接从Symfony提高OPcache的性能?或者我可以向我的托管服务提供商建议任何设置更改?

由于

以下是opcache_get_status(false)的示例输出,如果它有帮助:

[opcache_enabled] => 1
[cache_full] => 1
[restart_pending] => 
[restart_in_progress] => 
[memory_usage] => Array
    (
        [used_memory] => 25118936
        [free_memory] => 46888
        [wasted_memory] => 0
        [current_wasted_percentage] => 0
    )

[interned_strings_usage] => Array
    (
        [buffer_size] => 4194304
        [used_memory] => 4194292
        [free_memory] => 12
        [number_of_strings] => 102372
    )

[opcache_statistics] => Array
    (
        [num_cached_scripts] => 1074
        [num_cached_keys] => 1989
        [max_cached_keys] => 3907
        [hits] => 302267
        [start_time] => 1468984961
        [last_restart_time] => 1469018698
        [oom_restarts] => 0
        [hash_restarts] => 0
        [manual_restarts] => 1
        [misses] => 6467
        [blacklist_misses] => 0
        [blacklist_miss_ratio] => 0
        [opcache_hit_rate] => 97.9053165508
    )

1 个答案:

答案 0 :(得分:0)

你没有做错任何事,你的opcache大小对于想要进入它的脚本数量来说太小了。

增加内存大小是唯一的选择。

然后准备好也增加允许的脚本数量,因为可以缓存更多脚本,系统可能会达到此另一个限制,并且不会使用内存。最大值为max_cached_keys,您当前的使用情况见num_cached_keys

对于记录:使用PHP 7将减少每个脚本在opcache中所需的内存量,因此升级将自行改善这种情况:更多脚本适合相同数量的内存,并且代码执行速度更快。