Моя цель - реализовать APC для кеширования кодов операций для производственного сайта drupal 6. До сих пор я тестировал APC с несколькими файлами php с включением других файлов php с include_once и без них.
Также попытался настроить значения apc.ini для shm_size, apc.include_once_override и apc.stat. Каждый раз перезапускал apache.
В результате apc.php не показывает никаких изменений каких-либо значений. (за исключением, конечно, измененных значений apc.ini, которые отображаются должным образом)
Каждый раз, когда я обновляю тестовую страницу apc.php, время начала сбрасывается как текущее время, показывающее время безотказной работы 0 минут.
apc.php -testpage показывает:
General Cache InformationAPC Version 3.1.9
PHP Version 5.2.10
APC Host xxxx.xx.xx
Server Software Apache/2.2.3 (CentOS)
Shared Memory 1 Segment(s) with 128.0 MBytes
(mmap memory, pthread mutex Locks locking)
Start Time 2011/07/26 11:53:56
Uptime 0 minutes
File Upload Support 1
Cached Files 0 ( 0.0 Bytes)
Hits 1
Misses 1
Request Rate (hits, misses) 2.00 cache requests/second
Hit Rate 1.00 cache requests/second
Miss Rate 1.00 cache requests/second
Insert Rate 0.00 cache requests/second
Cache full count 0
Cached Variables 0 ( 0.0 Bytes)
Hits 0
Misses 0
Request Rate (hits, misses) 0.00 cache requests/second
Hit Rate 0.00 cache requests/second
Miss Rate 0.00 cache requests/second
Insert Rate 0.00 cache requests/second
Cache full count 0
apc.cache_by_default 1
apc.canonicalize 1
apc.coredump_unmap 0
apc.enable_cli 0
apc.enabled 1
apc.file_md5 0
apc.file_update_protection 2
apc.filters
apc.gc_ttl 3600
apc.include_once_override 0
apc.lazy_classes 0
apc.lazy_functions 0
apc.max_file_size 16
apc.mmap_file_mask /tmp/apcphp5.095eRm
apc.num_files_hint 1024
apc.preload_path
apc.report_autofilter 0
apc.rfc1867 0
apc.rfc1867_freq 0
apc.rfc1867_name APC_UPLOAD_PROGRESS
apc.rfc1867_prefix upload_
apc.rfc1867_ttl 3600
apc.serializer default
apc.shm_segments 1
apc.shm_size 128M
apc.slam_defense 0
apc.stat 0
apc.stat_ctime 0
apc.ttl 7200
apc.use_request_time 1
apc.user_entries_hint 4096
apc.user_ttl 7200
apc.write_lock 1
Host Status Diagrams:
Free: 128.0 MBytes (100.0%) Hits: 1 (50.0%)
Used: 20.3 KBytes (0.0%) Misses: 1 (50.0%)
Detailed Memory Usage and Fragmentation:
Fragmentation: 0%
phpinfo показывает:
Server API CGI/FastCGI
APC:
Version 3.1.9
APC Debugging Enabled
MMAP Support Enabled
MMAP File Mask /tmp/apcphp5.JkKDk7
Locking type pthread mutex Locks
Serialization Support php
Revision $Revision: 308812 $
Build Date Jul 21 2011 14:31:12
Я выполнил следующие шаги, чтобы узнать, могут ли настройки suexec предотвратить кеширование: http://www.litespeedtech.com/support/forum/showthread.php?t=4189
[root@host /]# ps -ef|grep lsphp
root 20402 17833 0 11:21 pts/0 00:00:00 grep lsphp
[root@host /]# ps -waux
root 17833 0.0 0.1 5004 1484 pts/0 S 10:39 0:00 bash
.. указывает на то, что на хосте не запущен lsphp
также я прочитал следующую статью и комментарии, сделав вывод, что в моем случае проблема не в suexec, поскольку пользовательский apache является владельцем процесса httpd http://www.brandonturner.net/blog/2009/07/fastcgi_with_php_opcode_cache/
также команда suexec не распознается, когда она регистрируется и запускается как root @ host
также я почти уверен, что на хосте нет cPanel, чтобы проверить, сбрасывает ли там какой-то параметр запущенный процесс кеширования через некоторый интервал
Это оставляет мне несколько подсказок, куда двигаться дальше. Я попытался установить (с помощью chown и chgrp) apache в качестве владельца файла apc.php и некоторых тестовых файлов php, что привело к ошибке сервера 500.
Есть ли способ проверить, не позволяют ли права доступа к файлу работать apc? Я безмерно благодарен за любые предложения или помощь.
Ваша конфигурация показывает, что apc.max_file_size
установлен на 16
байты. Таким образом, ни один файл размером более 16 байт (а они ВСЕ!) Не будет кэшироваться. Я бы сбросил это значение по умолчанию 1M
.
Если кто-то обнаружит, что это ищет аналогичную проблему, вам может потребоваться проверить apc.enable_opcode_cache = 1
:
«В ветке разработки (3.1.5dev) была введена опция для отключения кеша опкодов (apc.enable_opcode_cache = 0), что позволяет использовать Zend OPcache и APC строго для пользовательских данных». -Remi Блог
У меня такая же проблема. Это была проблема с tmp. Установка mmap_file_mask в / dev / zero приводит к кешированию. Подробности размещены на drupal.org под тем же именем пользователя.
Установка разрешений на tmp не поможет, если он не смонтирован с правильными разрешениями.
У вас включен SELinux на этом хосте? Проверьте это с помощью getenforce
. Если он вернется Enforcing
, он включен.
Если он включен и вам он не нужен, попробуйте временно (до следующей перезагрузки, то есть) отключить его с помощью setenforce 0
. Если это решит вашу проблему и вам необходимо навсегда отключить SELinux, измените /etc/selinux/config
файл и установите его как отключенное. В качестве альтернативы вы можете попытаться изменить SELinux, чтобы он был более разрешительным, но это другая тема, и мы вернемся к ней, если это действительно произошло из-за SELinux. :-)
РЕДАКТИРОВАТЬ: Итак, SELinux был отключен.
Ты видишь /tmp/apcphp5.JkKDk7
стильные файлы в / tmp?