Назад | Перейти на главную страницу

Могу ли я еще больше оптимизировать эти настройки APC?

Я хотел бы еще немного оптимизировать APC, но не знаю, где что-то сделать. Во-первых, вот скриншот после недели работы с текущей конфигурацией:

У меня есть следующие моменты, в которых я не уверен:

  1. Правильно ли я вижу, что фрагментация происходит из-за того, что кеш также используется как пользовательский кеш?
  2. Почему полоса фрагментации показывает 100% всего 5,8 МБ, когда я выделил всего 192 МБ?
  3. Это просто проблема рендеринга, что кружок под «Использование памяти» не полностью закрыт? Потому что приведенные ниже значения МБ складываются. (Сказать, что круг выглядит красиво после перезапуска, он просто становится таким, когда кеш становится все более и более фрагментированным.)
  4. Так как процент попаданий действительно хорош, я не уверен, является ли фрагментация большой проблемой или нет. Как вы думаете, я еще могу его оптимизировать?

Меня больше всего интересуют ответы на эти вопросы. Только тогда я смогу лучше понять APC и сам внести коррективы.

Некоторая подробная информация: На этом сервере работают Drupal и Magento. Drupal также использует его как пользовательский кеш.

Теперь для меня вопрос, как я могу его оптимизировать. Я мог бы выделить больше оперативной памяти, но не уверен, что это действительно помогает.

ОБНОВЛЕНИЕ: вот конфигурация:

; The size of each shared memory segment in MB.
apc.shm_size = 192M

; Prevent files larger than this value from getting cached. Defaults to 1M. 
apc.max_file_size = 2M

; The number of seconds a cache entry is allowed to idle in a slot in case
; this cache entry slot is needed by another entry.
apc.ttl = 3600

Как видите, на данный момент он довольно минимален.

Правильно ли я вижу, что фрагментация происходит из-за того, что кеш также используется как пользовательский кеш?

Нет, фрагментация может произойти, когда размер кэша опкодов файла изменился, и он не поместится в «срез», который занимал раньше - под капотом это немного сложнее, но в этом суть.

Почему полоса фрагментации показывает 100% всего 5,8 МБ, когда я выделил всего 192 МБ?

Он говорит вам на 100%, потому что из вашего свободного доступного места в кэше 100% его задействовано во фрагментации (что означает, что входной барьер для этого «фрагмента» должен находиться в пределах фрагментированного размера).

Это просто проблема рендеринга, что кружок под «Использование памяти» не полностью закрыт?

Да, не верь этому; значения, напечатанные «внутри фрагментов», также иногда неверны.

Так как процент попаданий действительно хорош, я не уверен, является ли фрагментация большой проблемой или нет. Как вы думаете, я еще могу его оптимизировать?

Абсолютно! Я бы увеличил кеш. У вас может быть выделено 100 МБ, кэшировано 10 МБ, и при этом процент попаданий по-прежнему составляет 100%.

Успешная установка должна иметь небольшую обрезку (также известную как: от нескольких до без gc) - и место для расширения, вы хотеть немного лишнего места; (более 5 МБ), потому что эффекты фрагментации «усложнят» вещи, которые хотят попасть в кеш.

Снимайте на 10% свободного нефрагментированного пространства, продолжайте отслеживать и увеличивать размер. Также знайте, что добавление большого количества новых файлов кода также повлияет на кеш.

Что касается вопроса 3,
Я не могу точно сказать, почему круг не закрывается полностью, но он выглядит так же для моей установки после нескольких дней безотказной работы и с 10% фрагментацией.

2,
Я думаю, что это сбой на странице статистики APC, мой говорит мне «10,34% (771,7 КБ из 7,3 МБ в 89 фрагментах)», где 7,3 МБ - это точно объем памяти, который должен быть свободен согласно статистике использования памяти.
Если вы посмотрите на свой снимок экрана, то заметите, что похоже, что он там делает то же самое.
5.8 из 5.8 фрагментированы, а 5.8 свободны, поэтому либо фрагментация каким-то образом рассчитывается на свободную память, либо числа просто неверны.

Смотрите мой скриншот для сравнения:

Вам следует взглянуть на счетчик «Cache full count»,> 1 означает, что вам не хватает памяти для APC, в этом случае вы закончили 39 раз за 3 дня, что кажется много.

Кажется более вероятным, что ваше использование кеша пользователя вызывает эту фрагментацию, чем использование кеширования файлов php, потому что оно имеет тенденцию кэшировать множество мелких различных объектов, которые в конечном итоге занимают память только для ссылки на их существование.

Первое, что я сделал бы, это попытался бы увеличить выделенную память APC (безопасно, 2Go не должно быть решением) до тех пор, пока не перестанет происходить «полный счет кеша», затем я бы сосредоточился на количестве объектов, помещенных в пользовательский кеш.
Если вы можете ограничить их количество (а не их размер), это было бы здорово, но вы могли бы изучить различные возможности, такие как memcache для хранения этого пользовательского кеша и выделить APC для кеширования файлов.

Публикация текущей конфигурации APC очень поможет, так как мы могли бы взглянуть на значения TTL, которые могут быть важны и в этом случае.