APC File Cache не работает, но пользовательский кеш в порядке - PullRequest
3 голосов
/ 07 сентября 2011

Резюме: У меня установлен PHP (5.3.8) в качестве модуля Apache и установлен APC через PECL. Пользовательский кеш работает нормально, но файловый кеш не работает (у меня apc.cache_by_default установлено в 1, так что это не проблема)

Деталь: Я только что получил VPS (с cPanel / WHM), чтобы проверить, какую выгоду я могу получить в своем приложении, используя кэш-файл apc И пользовательский кеш.

Итак, я получил PHP 5.3, скомпилированный как DSO (модуль apache).

Затем установил APC через PECL через SSH. (Сначала я попробовал установить WHM Module, у него тоже была такая же проблема, поэтому я попробовал через ssh)

Все выглядело нормально, и phpinfo показал, что apc загружен и включен.

Тогда я проверил с apc.php. Все казалось в порядке

Но когда я начал тестировать свое php-приложение, статистика в apc для состояния File Cache Information:

Cached Files    0 ( 0.0 Bytes)  
Hits    1  
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  

Это означало, что PHP-файлы не кэшировались, хотя я просмотрел более 10 PHP-файлов с несколькими включениями. Так что, должно быть, было несколько кэшированных файлов.

Но пользовательский кеш работает нормально.

User Cache Information  
Cached Variables    0 ( 0.0 Bytes)  
Hits    1000  
Misses  1000  
Request Rate (hits, misses) 0.84 cache requests/second  
Hit Rate    0.42 cache requests/second  
Miss Rate   0.42 cache requests/second   
Insert Rate 0.84 cache requests/second  
Cache full count    0

Приведенный выше вывод пользовательского кэша взят из сценария тестирования кэширования APC, который пытается получить и сохранить 1000 записей и выдает мне время. Этакий простой тест.

Может ли кто-нибудь помочь мне здесь.
Несмотря на то, что apc.cache_by_default = 1, php-файлы не кэшируются.

Это мой apc config

Runtime Settings  
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   1M  
apc.mmap_file_mask    
apc.num_files_hint  1000  
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    32M  
apc.slam_defense    1  
apc.stat    1  
apc.stat_ctime  0  
apc.ttl 0  
apc.use_request_time    1  
apc.user_entries_hint   4096    
apc.user_ttl    0    
apc.write_lock  1

Кроме того, большинство файлов php имеют размер менее 20 КБ, поэтому apc.max_file_size = 1M не является причиной.

Я безуспешно пытался следить за вещами.

  1. Использование apc_compile_file для принудительной загрузки некоторых файлов в кэш кода операции без удачи.
  2. переустановил APC с включенной отладкой, но в error_log ничего не отображается
  3. установка mmap_file_mask на / dev / zero и /tmp/apc.xxxxxx, я также установил / tmp разрешения на 777 безрезультатно
  4. set apc.enable_cli = 1 И запустить скрипт из cli
  5. Установить apc.max_file_size = 5M (на всякий случай)
  6. переключил обработчик php из dso в FastCGI в WHM (затем переключил его обратно в dso, поскольку это не решило проблему)
  7. Даже попытался перезапустить контейнер

Любая подсказка.

Примечание: Я разместил вопрос на serverfault.com, но не получил много просмотров или ответа, поэтому я публикую здесь (поскольку stackoverflow кажется более активным, и у меня есть только 1 месяц чтобы проверить мой VPS и посмотреть, будет ли он полезен для общего доступа)

1 Ответ

2 голосов
/ 08 сентября 2011

Кажется, проблема была в SourceGuardian.
Кэширование файлов теперь работает нормально после комментирования extension = "ixed.5.3.lin" из php.ini.

Он был обнаружен службой поддержки моего провайдера хостинга, так что спасибо за такую ​​отличную поддержку. Я не нашел бы проблему в течение нескольких дней.

Мысль должна опубликовать ответ на тот случай, если кто-то еще наткнется на эту проблему.

...