Использование Symfony с OPcache — полный кеш

Некоторые из моих веб-сайтов размещены на сервере с активированным OPcache, что значительно повышает производительность, но у меня проблема с быстрым заполнением кеша. Затем на некоторых страницах я получаю ошибку 502, что, конечно же, является серьезной проблемой. Единственный способ решить эту проблему — вручную очистить кеш, но это помогает ненадолго. Мой хостинг-провайдер сказал мне, что они пробовали некоторые изменения (которые мне не помогли) и что я не могу ожидать увеличения памяти для OPcache в ближайшее время. Когда я попытался отключить OPcache, нагрузка на сервер была слишком высокой, поэтому мне нужно продолжать его использовать.

Самый большой сайт, который у меня есть, основан на Symfony3. Другие сайты представляют собой относительно небольшие страницы, но один из них — с которым у меня тоже возникают проблемы — основан на Silex (микрофреймворке Symfony).

Можно ли как-нибудь улучшить производительность OPcache прямо из Symfony? Или какие-либо изменения в настройках, которые я мог бы предложить моему хостинг-провайдеру?

Спасибо

Вот пример вывода из 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
    )

person Czechnology    schedule 20.07.2016    source источник
comment
Это одна из многих причин, по которой мы всегда (настоятельно) предлагаем людям приобрести VPS вместо того, чтобы зависеть от какой-либо третьей стороны.   -  person PeeHaa    schedule 20.07.2016
comment
@PeeHaa: Ну, они называют это хостингом VPS, и у меня есть несколько параметров, которые я могу установить, но у меня нет полного контроля над всем. И у меня, вероятно, также нет полных знаний, чтобы настроить весь сервер самостоятельно.   -  person Czechnology    schedule 20.07.2016
comment
Что ж, если вы платите за управляемый VPS, я не вижу причин, по которым вам не дадут больше памяти.   -  person PeeHaa    schedule 20.07.2016
comment
2PeeHaa: Спасибо, но это не ответ на мой вопрос. Есть ли что-нибудь, что помогает в этой ситуации (или что-то, что я делаю неправильно), кроме увеличения памяти для opcache? (Я действительно не эксперт по opcache, поэтому буду рад конструктивным советам.)   -  person Czechnology    schedule 20.07.2016


Ответы (1)


Вы не делаете ничего плохого, просто размер вашего opcache слишком мал для количества скриптов, которые хотят в него войти.

Единственным вариантом будет увеличение объема памяти.

Будьте готовы затем также увеличить количество разрешенных сценариев, потому что, поскольку больше сценариев может быть кэшировано, ваша система может достичь этого другого ограничения и оставить память неиспользованной. Максимум – max_cached_keys, а ваше текущее использование отображается под num_cached_keys.

Для записи: использование PHP 7 уменьшит объем памяти, который потребуется каждому скрипту в opcache, поэтому обновление само по себе улучшит ситуацию: больше скриптов поместится в тот же объем памяти, и это ускорит выполнение кода.

person Sven    schedule 02.05.2018