Я слишком разочарован системой кеширования PHP APC, и я хотел полностью удалить / отключить ее со своего сервера. Я использую PHP с Nginx, установленным в Debian Squeeze, есть ли способ сделать это?
Вместо удаления APC, что вызовет массивный производительность поразила, и эффектно прострелил себе ногу ..
Попробуйте это: в /etc/php5/conf.d/apc.ini:
extension=apc.so
apc.shm_size=128M
apc.shm_segments=1
apc.max_file_size=5M
apc.num_files_hint=10000
apc.slam_defense = 0
apc.write_lock=1
Вы можете увеличить apc.shm_size
на значение больше 128, скажем 512, если у вас достаточно свободной оперативной памяти.
Я сделал это на сервере, который я запускаю, и никогда не видел Невозможно выделить память для пула ошибки.
Либо удалить /opt/php5/etc/conf.d/apc.ini
или закомментируйте все строки в нем ;
. Не забудьте после этого перезапустить свой веб-сервер.
Также проверьте '/etc//php5/apache2/php.ini' на предмет 'extension = apc.so' для удаления комментариев.
Если у вас все еще есть источники, вы можете попробовать сделать make uninstall
потом. Я не знаю, содержит ли make-файл эту цель.
Если вы не устанавливали что-то помимо того, что предлагает Squeeze, простой apt-get remove php-apc
должен сделать свое дело.
Решение - увеличить объем памяти, выделенной APC.
Использование TTL равного 0 означает, что APC очистит весь кеш, когда ему не хватит памяти. Ошибка больше не появляется, но это снижает эффективность APC. Это не риск, не проблема: «Я не хочу выполнять свою работу». APC не предназначен для использования таким образом. Вы должны выбрать достаточно высокий TTL, чтобы срок действия наиболее часто посещаемых страниц не истек. Лучше всего предоставить достаточно памяти, чтобы APC не нужно было очищать кеш.
Просто прочтите руководство, чтобы понять, как используется ttl: http://www.php.net/manual/en/apc.configuration.php#ini.apc.ttl
Вы можете увеличить выделенную память, увеличив apc.shm_size.
Если APC скомпилирован для использования разделяемой сегментной памяти, вы будете ограничены вашей операционной системой. Введите эту команду, чтобы увидеть предел вашей системы для каждого сегмента:
sysctl -a | grep -E "shmall|shmmax"
Чтобы выделить больше памяти, вам нужно увеличить количество сегментов с помощью параметра apc.shm_segments.
Если APC использует память mmap, у вас нет ограничений. Объем памяти по-прежнему определяется той же опцией apc.shm_size.
Если на сервере недостаточно памяти, используйте опцию фильтров, чтобы предотвратить кеширование файлов PHP, к которым реже обращаются.
Но никогда не используйте значение TTL равное 0.
Используйте apc.php, чтобы проверить свою конфигурацию. Вы увидите, что на самом деле выделено и как оно используется. Графики должны оставаться стабильными в нерабочее время, если они полностью меняются при каждом обновлении, это означает, что ваша настройка неверна (APC все стирает). Выделите 20% от того, что APC действительно использует в качестве запаса безопасности, и регулярно проверяйте его.
По умолчанию разрешено только 32 МБ - это смехотворно мало. PHP был разработан, когда серверы имели размер 64 МБ и большинство скриптов использовали один файл php на страницу. В настоящее время для таких решений, как Magento, требуется более 10k файлов (~ 60 МБ в APC). Вы должны выделить достаточно памяти, чтобы большинство файлов php всегда кэшировалось. Это не пустая трата времени, гораздо эффективнее хранить код операции в оперативной памяти, чем иметь соответствующий необработанный php в файловом кеше. В настоящее время мы можем найти выделенные серверы с 24 ГБ памяти всего за 150 долларов, так что не стесняйтесь предоставить APC несколько ГБ. Я поставил 2 ГБ из 24 ГБ на сервер, на котором размещены магазины 5Magento и ~ 40 веб-сайтов WordPress, APC использует 1,2 ГБ. Считайте 64 МБ для установки Magento, 20 МБ для Wordpress с некоторыми плагинами.