Perguntas sobre a instalação do PHP APC

5

Durante a instalação do PHP APC, recebi duas perguntas inesperadas. Eu já havia instalado o APC em um ambiente de teste e não recebi essas perguntas.

As perguntas são:

  • Ativar por arquivo de solicitação informações sobre arquivos usados do cache do APC
  • Ativar bloqueios de rotação (EXPERIMENTAL)

Aqui estão algumas linhas iniciais de instalação:

# pear install pecl/apc
WARNING: channel "pecl.php.net" has updated its protocols, use "channel-update pecl.php.net" to update
downloading APC-3.1.6.tgz ...
Starting to download APC-3.1.6.tgz (148,835 bytes)
..........................done: 148,835 bytes
49 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
 1. Enable per request file info about files used from the APC cache : no

1-1, 'all', 'abort', or Enter to continue: 
 1. Enable spin locks (EXPERIMENTAL) : no

1-1, 'all', 'abort', or Enter to continue: 
building in /var/tmp/pear-build-root/APC-3.1.6
running: /var/tmp/APC/configure --enable-apc-filehits=no --enable-apc-spinlocks=no

Alguém sabe o que essas perguntas fazem? Quais seriam as respostas adequadas?

    
por Haluk 15.12.2010 / 18:21

3 respostas

6

A resposta curta é que as opções geralmente podem ser deixadas nos padrões, o que você pode considerar como as respostas "adequadas".

A primeira opção (--enable-apc-filehits) permite reunir informações para a opção "filehits" de apc_cache_info . Basicamente, você pode usá-lo para descobrir quais arquivos são extraídos do cache para cada solicitação, se estiver depurando problemas relacionados ao cache. Da documentação apc_cache_info :

If cache_type is "filehits", information about which files have been served from the bytecode cache for the current request will be returned. This feature must be enabled at compile time using --enable-filehits.

Quando se trata da segunda opção (--enable-apc-spinlocks), os spinlocks são um ciclo-processador forma ineficiente de garantir que apenas um processo acesse um recurso a qualquer momento. A APC usa bloqueios ao lidar com memória compartilhada. O APC coloca o cache na memória compartilhada para que todos os processos do PHP possam, bem, compartilhar o cache, e os bloqueios garantem que os processos não tropeçam uns nos outros ao fazê-lo.

A partir do APC 3.1.9, o instalador PECL pergunta sobre a ativação de três opções adicionais: proteção de memória, bloqueios de leitura / gravação pthread e exclusões de pthread, que correspondem a --enable-apc-memprotect, --enable-apc-pthreadrwlocks e --enable-apc-pthreadmutex. Os dois primeiros são rotulados experimental e desativado por padrão; o último está ativado.

A proteção de memória trata algumas áreas da memória compartilhada como somente leitura em certas circunstâncias.

Os bloqueios e mutexes de leitura / gravação Pthread são mecanismos de bloqueio alternativos. Os mecanismos de bloqueio que a APC pode usar atualmente são:

  1. bloqueio de arquivos (fcntl)
  2. semáforos
  3. bloqueios pthread
  4. mutexes pthread
  5. Bloqueios de leitor / gravador refinados (somente Windows)
  6. spinlocks

Prenda-se ao mecanismo de bloqueio padrão, a menos que a APC não compile. Brian Shire, do Facebook, testou o desempenho do mecanismo de bloqueio e apresentou os resultados em 2007; você pode usar seus resultados para guiá-lo ao tentar mecanismos de bloqueio quando os padrões falharem.

    
por 25.09.2011 / 22:35
1

Em vez de usar AB para benchmarks, você deve usar o cerco que é mais preciso.

    
por 27.05.2011 / 23:59
0

tem certeza de que o apc está ativado?

php -i | grep apc 

Só porque está instalado não significa que está carregado em php

    
por 25.08.2011 / 23:34