Я слишком разочарован системой кэширования PHP APC и хотел бы полностью удалить/отключить ее со своего сервера. Я использую PHP с Nginx, установленным на Debian Squeeze, есть ли способ это сделать?
решение1
Вместо того, чтобы удалить 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, если у вас достаточно свободной оперативной памяти.
Я сделал это на сервере, который я запускаю, и никогда не виделНевозможно выделить память для пулаошибки.
решение2
Либо удалите /opt/php5/etc/conf.d/apc.ini
, либо закомментируйте все строки с помощью ;
. Не забудьте перезапустить веб-сервер после этого.
Также проверьте файл «/etc//php5/apache2/php.ini» на наличие «extension=apc.so» для его комментирования.
Если у вас все еще есть исходники, вы можете попробовать сделать make uninstall
позже. Я не знаю, содержит ли makefile эту цель.
решение3
Если вы не устанавливали ничего, кроме того, что предлагает Squeeze, то простого apt-get remove php-apc
должно быть достаточно.
решение4
Решением является увеличение памяти, выделяемой 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 скомпилирован для использования Shared Segment Memory, вы будете ограничены вашей операционной системой. Введите эту команду, чтобы увидеть системный лимит для каждого сегмента:
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, требуют более 10 тыс. файлов (~60 МБ в APC). Вы должны выделить достаточно памяти, чтобы большинство файлов php всегда кэшировались. Это не пустая трата, эффективнее хранить код операции в оперативной памяти, чем иметь соответствующий сырой php в файловом кэше. В настоящее время мы можем найти выделенные серверы с 24 ГБ памяти всего за 150 долларов, так что не стесняйтесь выделять несколько ГБ для APC. Я выделил 2 ГБ из 24 ГБ на сервер, на котором размещены 5 магазинов Magento и ~40 сайтов WordPress, APC использует 1,2 ГБ. Считайте, что 64 МБ для установки Magento, 20 МБ для Wordpress с некоторыми плагинами.