我的一些网站托管在激活了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
)
答案 0 :(得分:0)
你没有做错任何事,你的opcache大小对于想要进入它的脚本数量来说太小了。
增加内存大小是唯一的选择。
然后准备好也增加允许的脚本数量,因为可以缓存更多脚本,系统可能会达到此另一个限制,并且不会使用内存。最大值为max_cached_keys
,您当前的使用情况见num_cached_keys
。
对于记录:使用PHP 7将减少每个脚本在opcache中所需的内存量,因此升级将自行改善这种情况:更多脚本适合相同数量的内存,并且代码执行速度更快。