Проблемы с APC или "Unable to allocate memory for pool"

10.0/10 оценка (1 голосов)

Примечание. APC является устаревшим модулем и на текущий момент не рекомендуется к установке и использованию для PHP версий 5.4 и выше. Вместо него лучше взять xCache 3.0+ или использовать коробочный оптимизатор. Его можно использовать только с 5.3.

Что такое APC?

APC (Alternative PHP Cache) или Акселератор PHP — это расширение для PHP, основное назначение которого — увеличение производительности интерпретатора при обработке сценариев путем кэширования их байт-кода.

В этой статье мы поговорим, как решить одну из самых популярных ошибок с APC (Alternative PHP Cache) — Unable to allocate memory for pool. Внешне она выглядит следующим образом

Warning: require_once() [function.require-once]: Unable to allocate memory for pool

Смысл в том, что APC сообщает, что у него кончилась память для кеша. На самом деле это не ошибка, а предупреждение. Существует три способа убрать данное предупреждение.

Способ #1 (рекомендованный)

Используйте современный оптимизатор — xCache, либо встроенный в PHP (начиная с версии 5.5). И APC лучше выключить, потому что он устарел несколько лет назад.

Способ #2

Увеличим в php.ini значение apc.shm_size, или обращаемся к хостеру и говорим, что нужно больше памяти.

Плюсы: повышение производительности вашего сайта.

Минусы: расходуется много памяти.

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

Способ #3

Выключите APC. Допишите в .htaccess php_flag apc.cache_by_default Off

К сожалению, не все хостеры позволяют самостоятельно отключить APC с помощью .htaccess. В таком случае вам необходимо обращаться непосредственно к хостеру.

Минусы: возможно заметное снижение производительности.

APC

У меня остались вопросы, где я могу их задать?

Вы можете обратиться на наш специальный форум техподдержки JBZoo. Если у вас нет активного аккаунта со знаком «плюс» в тарифном плане, то вы можете задать свой вопрос в одном из этих разделов или на любой из наших контактов. Форум специально предназначен для JBZoo, приоритет и скорость ответа там выше.