PHP opcache. 100% совпадений, 100% используемая память [закрыто]

Мой PHP OPcache использует 100% памяти

General info
Zend OPcache    7.0.4-dev
PHP 5.5.23-1+deb.sury.org~trusty+2
Server Software nginx/1.6.2

Вот мои настройки кэша:

zend_extension=opcache.so
opcache.memory_consumption=1024
opcache.max_accelerated_files=50000
opcache.revalidate_freq=180
opcache.consistency_checks=0

И еще немного информации о попаданиях в кеш:

total memory: 1024.000MB
used memory: 1010.398MB
free memory: 35.086KB
wasted memory: 13.568MB (1.32%)
number of cached files: 10,724
number of hits: 9,576,431
number of misses: 21,450
blacklist misses: 0
number of cached keys: 12,971
max cached keys: 65,407

opcache panel view

Стоит ли мне беспокоиться о 100% использовании памяти? Может ли кто-нибудь объяснить использование памяти OPcache в терминах непрофессионала?

Сервер имеет 8 ГБ оперативной памяти (Linode)

0
задан 18 June 2015 в 13:51
2 ответа

Предел памяти opcache (в настоящее время установленный на 1024 МБ / 1 ГБ) должен быть достаточно большим, чтобы покрыть размер всех файлов PHP, кэшируемых Opcache. 1 ГБ для набора файлов PHP - это большой объем, поэтому, возможно, это не проблема, но вам следует хотя бы начать с него. Кнопка «Использование файла» на прилагаемом снимке экрана, вероятно, предоставит вам отчет об использовании памяти для каждого кэшированного файла.

Произведя небольшую математику с числами, которые вы опубликовали, 1024 МБ / 10724 файла ~ = 98 КБ на файл в среднем. Я полагаю, это возможно, в зависимости от того, что вы размещаете. Это общий сервер с множеством разных файлов PHP?

Вы можете установить параметр opcache.max_file_size в конфигурации кэша, чтобы исключить любые большие файлы PHP из кеширования. Например, opcache.max_file_size = 102400 исключит из кеширования любые файлы PHP размером более 100 КБ. Значение этого параметра конфигурации выражается в байтах.

Говоря простым языком, Opcache берет файл PHP и загружает его в память. Затем, когда файл PHP запрашивается в какой-то новый момент (вероятно, другим пользователем), он извлекается из памяти, а не с диска. Это экономит как время ввода-вывода на диск, так и время на компиляцию файла PHP, поскольку он хранится в скомпилированном формате (отсюда и название кода операции). Ваши текущие настройки позволяют таким образом кэшировать до 50 000 файлов при использовании 1 ГБ памяти.

1
ответ дан 4 December 2019 в 11:27

Может ли кто-нибудь объяснить использование памяти OPcache в терминах непрофессионала?

ldennison плюс различные комментаторы наверное / в основном ответили на эту часть.

Еще одно замечательное описание можно найти здесь: http://www.sitepoint.com/understanding-opcache/

Позвольте мне подвести итог:

OPcache позволяет предварительно выделить определенное объем памяти. Вы установили 1024, т.е. 1 ГБ. Это вы сообщаете своей системе: «кэшируйте до 1 ГБ скомпилированного скрипта php, чтобы компьютеру не приходилось переводить его из удобочитаемого кода PHP в единицы и нули, которые компьютер может понять каждый раз при запуске». Каждый раз, когда такой сценарий запускается в первый раз, его предварительно скомпилированная версия добавляется в эту кэш-библиотеку. Его еще не было в кеше при первом запуске, так что это был промах в кеше. Если он запрашивается снова и уже / все еще находится в кеше, он извлекается из кеша, экономя один «дорогостоящий» этап вычислений. Это представляет собой попадание в кеш.

Использование памяти просто означает, сколько из вашего 1 ГБ используется. Вы видите 100% использование. Это означает, что у вас есть 1 ГБ скриптов php, которые кешируются и готовы к работе из этого кеша. Кеш заполнен, поэтому либо новые скрипты не могут быть добавлены, либо непопулярные элементы кеша удаляются, в зависимости от настроек / движка.

Стоит ли мне беспокоиться по поводу 100% использования памяти?

Нет.

Если коэффициент попадания в кеш был низким, то есть он неоднократно искал в кеше файл, но не мог его найти (например, потому, что он там не помещался), тогда вам следует «беспокоиться». Но частота попаданий в кеш высока, что означает, что почти каждый раз, когда он что-то хочет от кеша, он это находит. Это означает, что размер кеш-памяти 1024 МБ, составляющий 1/8 от общей оперативной памяти сервера, очень хорош.

Увеличение размера кэша вдвое, вероятно, не приведет к значительному изменению скорости обращения к нему. Добавьте 100 МБ, и этого может быть достаточно, чтобы перейти с 96% до 98%.

Итак, «проблема», которую вы видите (100% использование памяти), не выглядит настоящей проблемой. Да, он полон, но не упускает из виду большую часть ценности. При таком размере он может удовлетворить 96% своих потребностей. Это отличная статистика.

Взгляните на это с другой стороны ...

Если библиотека заполнена до потолка и не имеет больше возможностей для дополнительных книг, но в ней уже хранится 96% всех книг в мире, стоит ли строить расширение?Придаст ли это удовлетворенности посетителям библиотеки? 96 из каждых 100 посетителей уже находят то, что хотят.

4
ответ дан 4 December 2019 в 11:27

Теги

Похожие вопросы