我的一些网站托管在启用了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将减少每个脚本在操作缓存中所需的内存量,因此升级本身就会改善这种情况:更多的脚本可以放入相同的内存量中,而且代码执行速度更快。