Назад | Перейти на главную страницу

APC (PHP Cache) Время работы 0 минут, без кеширования

Моя цель - реализовать 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?