FastNetMon

суббота, 29 мая 2010 г.

Установка APC (Alternative PHP Cache) на Debian 5 Lenny

Офсайт проекта: http://pecl.php.net/package/APC

Установка APC из стабильного репозитория

APC в отличие от eAccelerator есть в в пакетном менеджере (версия 3.0.19-2 как раз стабильная из pecl):
apt-get install -y php-apc


После установки будет создан полу-пустой конфиг:
vi /etc/php5/conf.d/apc.ini


И мы получим стандартные настройки APC:

php -i | grep apc
/etc/php5/cli/conf.d/apc.ini,
apc
apc.cache_by_default => On => On
apc.coredump_unmap => Off => Off
apc.enable_cli => Off => Off
apc.enabled => On => On
apc.file_update_protection => 2 => 2
apc.filters => no value => no value
apc.gc_ttl => 3600 => 3600
apc.include_once_override => Off => Off
apc.max_file_size => 1M => 1M
apc.mmap_file_mask => no value => no value
apc.num_files_hint => 1000 => 1000
apc.report_autofilter => Off => Off
apc.rfc1867 => Off => Off
apc.rfc1867_freq => 0 => 0
apc.rfc1867_name => APC_UPLOAD_PROGRESS => APC_UPLOAD_PROGRESS
apc.rfc1867_prefix => upload_ => upload_
apc.shm_segments => 1 => 1
apc.shm_size => 30 => 30
apc.slam_defense => 0 => 0
apc.stat => On => On
apc.stat_ctime => Off => Off
apc.ttl => 0 => 0
apc.user_entries_hint => 4096 => 4096
apc.user_ttl => 0 => 0
apc.write_lock => On => On


И настройки компиляции:
APC Support enabled
Version 3.0.19
MMAP Support Enabled
MMAP File Mask no value
Locking type pthread mutex Locks
Revision $Revision: 3.154.2.5 $
Build Date Dec 17 2008 18:21:28


Тут стоит обратить внимание на apc.stat, он обязательно должен быть включен, иначе кэш не будет обновляться при обновлении файлов, а также на apc.shm_size, это размер shm сегмента в памяти.


Баги
При установке на Debian 5 + PHP FastCGI + IonCube + Zend Optimizer + APC получаем кучу мусора в dmesg:
[1218697.911671] php[28066]: segfault at e9 ip 00007fac6f561569 sp 00007ffff4066360 error 4 in ZendOptimizer.so[7fac6f4fe000+184000]


А в error.log апача:
[Sun May 30 21:32:36 2010] [notice] mod_fcgid: process /var/www/xxx/data/www/xxxx.ru/index.php(28238) exit(communication error), get unexpected signal 11


При этом сами сайты через раз выбрасывали 500ую и ругались на Cannot found function null (или что-то в этом роде).

Так что, нужно что-то с этим делать.

Установка из исходников

Будем ставить самую новую версию.

cd /usr/src
pecl download apc-3.1.3p1
tar -xf APC-3.1.3p1.tgz
cd APC-3.1.3p1
phpize
./configure # все стандартно
make
make install


Создаем конфиг:
echo "extension=apc.so" > /etc/php5/conf.d/apc.ini


Результат: тот же самый баг. Мораль - PHP FastCGI + APC + ZendOptimizer 3.3.9 несовместимы. Вот еще багрепорт.

Некоторые фичи на тему APC + PHP FastCGI + SHM память + расшаривание одного кэша между всеми процессами. APC это не умеет, вот фич риквест: http://pecl.php.net/bugs/bug.php?id=11988

Источник: http://www.debian-administration.org/articles/574

5 комментариев :

  1. Ну так как, это пофиксили уже или еще нет?

    ОтветитьУдалить
  2. никак не могу найти что значит флаг -y
    в команде
    apt-get install -y php-apc

    и чем она отличается от
    apt-get install php-apc

    ОтветитьУдалить
    Ответы
    1. Он просто не запросит подтверждения в стиле: Install this package? Y/n

      Удалить
    2. ))) спасибо. нутром чуял что-то подобное
      только увы нигде про это не написано... может плохо искал...

      Удалить

Примечание. Отправлять комментарии могут только участники этого блога.