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


Using Symfony with OPcache - full cache

我的一些网站托管在启用了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
    )

您没有做错任何事情,您的操作缓存大小对于想要进入它的脚本数量来说太小了。

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

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

需要说明的是:使用PHP7将减少每个脚本在操作缓存中所需的内存量,因此升级本身就会改善这种情况:更多的脚本可以放入相同的内存量中,而且代码执行速度更快。