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

PHP APC с использованием 2,7 МБ ОЗУ для файла, который обычно использует 16 КБ

У меня было приложение PHP, которое плохо работало. Я исследовал ситуацию и определил, что кеш APC будет постоянно заполняться. Я увеличил размер кеша apc, так что я не получаю никаких событий полного кеша, а приложение работает нормально.

Тем не мение...

Меня беспокоил тот факт, что этому приложению нужно было выделить столько памяти для apc. У меня есть другие приложения, которые очень похожи, и они отлично работают с настройкой по умолчанию 64M. (Мне пришлось подняться до 400 МБ, чтобы это приложение работало правильно)

Итак, я копнул глубже, используя apc.php, и увидел кое-что очень странное. Два разных приложения, использующие одну и ту же общую библиотеку, сообщали о совершенно разных показателях использования памяти для кеша apc ...

из приложения, в котором нет проблемы

Имя файла: tessituraLoginEx2.php Размер: 16592

И приложение, использующее всю дополнительную оперативную память

Имя файла: tessituraLoginEx2.php Размер: 2717488

Два разных приложения, оба используют одну и ту же общую библиотеку, приложение A использует 16 КБ ОЗУ для файла, а приложение B использует 2,7 МБ для одного и того же файла.

Кто-нибудь знает, почему приложения A и B будут использовать такие разительно разные размеры для одного и того же файла?

Дополнительная информация

Мне удалось обойти проблему, изменив способ включения проблемных файлов в проект. Оба проекта используют фреймворк, вызывая вспомогательный метод, который в конечном итоге выполняет require_once соответствующих файлов из соответствующего каталога.

Я изменил приложение, чтобы явно выполнять require_once без использования фреймворка, и использование раздутого apc ram исчезло. По-прежнему не понимаю, почему у apc возникает эта проблема, когда требование происходит более сложным / динамичным образом. К счастью, у нас больше нет необходимости в этой сложной логике, обернутой вокруг require_once, поэтому этот обходной путь позволит мне вернуться к разумному распределению памяти для apc.

И чтобы уточнить ... Оба приложения использовали одну и ту же сложную логику для выполнения require_once, но только одно имеет проблему с раздуванием.