Unable to allocate memory for pool
14 сентября 2011
Буквально двадцать минут назад забился кэш APC на форуме yiiframework.ru. Расследование проблемы заняло некоторое время. Итак, что же делать при получении Unable to allocate memory for pool
.
- Сливаем архив с APC.
- Берём оттуда
apc.php
и заливаем на сервер. - Открываем
apc.php
в браузере и смотрим, есть ли у нас свободная память. - Если нет, меняем в
php.ini
значениеapc.shm_size
. - Рестартим PHP.
Проблема может быть и другого рода, но чаще всего это именно забитый кэш.
Комментарии RSS по email OK
Как показывает практика, с этим нужно быть осторожнее. Есть такой баг (или особенность — трудно сказать), что при большом shm_size неконтролируемо вырастает RSS процесса (проверено на php/fcgi), после чего php либо съедает всю доступную память, либо начинает неконтролируемо падать.
Vladimir, если сильно-сильно задрать
shm
, то рост RSS будет, в общем-то, закономерен. При каких значениях начинались падения?После 64M — не помню точного значения (возможно, 128). В нашем случае RSS сильно переваливал за стандартный размер плюс shm_size (раза в три-четыре, если не больше). В итоге мы просто отказались от APC.
Ясно. Я пока до 64М поднял. Надеюсь, выше не придётся.
Хз, у меня уже с полгода на нескольких сервера стабильно (тьфу-тьфу) работает с apc.shm_size=256 На mod_php
Аналогично. Примерно год сижу на 256M. И все стабильно.
CentOS 5.*, CentALT.
Как по мне - XCache лучше, и в процессе использования ни разу не сталкивался с проблемами (хотя в баг трекере они конечно есть, но не много). А APC изначально не понравился тем, что в нём много чего напихано. Да и читал отзывы разработчиков о том, что он хреново написан и менять в нём что-то очень сложно, что меня, как программиста, совсем не порадовало :/
Можно вообще выключить (и рекомендуют везде куда ни кинь): php_flag apc.cache_by_default Off
Cached Files 169 ( 15.6 MBytes) apc.shm_size 32M
Ошибка до сих пор выдаётся
Не подскажете в чём дело?
Аскар, а что с фрагментацией кэша? Возможно, что кэш сильно фрагментирован, из-за чего APC не может закешировать файл.
Кстати, какая версия PHP и APC?
Самое простое решение — увеличивать значение apc.shm_size. Либо переходить на XCache (или Zend OpCache + APCu, если PHP 5.5)
Товарищи! Нужен администратор веб-сервера на удаленку
пишите в скайп smart-mdx
Булка выдает ту же ерунду после перехода на APC У нас apc.shm_size=64M
apc.shm_size= 768M Это ж гораздо больше ваших 64М. Как так?