Desativar ou remover APC

1

Estou muito frustrado com o sistema de cache PHP APC e queria removê-lo / desativá-lo completamente do meu servidor. Eu estou usando PHP com Nginx instalado no Debian Squeeze, existe alguma maneira de fazer isso?

    
por Vineet Sharma 23.11.2011 / 12:32

4 respostas

6

Em vez de remover o APC, o que causará um acerto de desempenho maciço e efetivamente atirará no seu próprio pé.

Tente isto: em /etc/php5/conf.d/apc.ini:

extension=apc.so
apc.shm_size=128M
apc.shm_segments=1
apc.max_file_size=5M
apc.num_files_hint=10000
apc.slam_defense = 0
apc.write_lock=1

Você pode aumentar apc.shm_size para um valor maior que 128, digamos 512 se você tivesse RAM livre suficiente.

Eu fiz isso em um servidor que rodei e nunca vi erros Não é possível alocar memória para pool .

    
por 23.11.2011 / 13:24
2

Remova /opt/php5/etc/conf.d/apc.ini ou comente todas as linhas com ; . Não se esqueça de reiniciar o seu servidor depois.

Verifique também '/etc//php5/apache2/php.ini' para 'extension = apc.so' no outcomment.

Se você ainda tiver as fontes, pode tentar fazer um make uninstall depois. Eu não sei se o makefile contém este alvo.

    
por 23.11.2011 / 13:11
1

Se você não instalou algo além do que o Squeeze oferece, um simples apt-get remove php-apc deve fazer o truque.

    
por 23.11.2011 / 12:48
0

A solução é aumentar a memória alocada para o APC.

Usar um TTL de 0 significa que a APC liberará todo o cache quando ficar sem memória. O erro não aparece mais, mas torna a APC muito menos eficiente. É uma decisão sem risco, sem problemas, "não quero fazer o meu trabalho". APC não é para ser usado dessa maneira. Você deve escolher um TTL alto o suficiente para que as páginas mais acessadas não expirem. O melhor é dar memória suficiente para que o APC não precise esvaziar o cache.

Basta ler o manual para entender como o ttl é usado: link

Você pode aumentar a memória alocada aumentando o apc.shm_size.

Se a APC for compilada para usar a Memória Compartilhada do Segmento, você será limitado pelo seu sistema operacional. Digite este comando para ver seu limite de sistema para cada segmento:

sysctl -a | grep -E "shmall|shmmax"

Para alocar mais memória, você terá que aumentar o número de segmentos com o parâmetro apc.shm_segments.

Se o APC estiver usando memória mmap, você não terá limite. A quantidade de memória ainda é definida pela mesma opção apc.shm_size.

Se não houver memória suficiente no servidor, use a opção filters para impedir que arquivos php acessados com menos frequência sejam armazenados em cache.

Mas nunca use um TTL de 0.

Use apc.php para verificar sua configuração. Você verá o que realmente está alocado e como é usado. Os gráficos devem permanecer estáveis depois de horas, se eles estão mudando completamente a cada atualização, então isso significa que sua configuração está errada (APC está liberando tudo). Aloque 20% do que a APC realmente usa como margem de segurança e verifique-a regularmente.

O padrão de permitir apenas 32MB é ridiculamente baixo. O PHP foi projetado quando os servidores tinham 64MB e a maioria dos scripts usava um arquivo php por página. Hoje em dia, soluções como o Magento requerem mais de 10k arquivos (~ 60Mb no APC). Você deve permitir memória suficiente para que a maioria dos arquivos php sejam sempre armazenados em cache. Não é um desperdício, é mais eficiente manter o opcode em memória RAM em vez de ter o php bruto correspondente no cache de arquivos. Hoje em dia podemos encontrar servidores dedicados com 24Gb de memória por apenas US $ 150, então não hesite em permitir vários GB para APC. Eu coloquei 2GB de 24GB em um servidor que hospeda lojas 5Magento e site ~ 40 wordpress, APC usa 1,2GB. Conte 64MB para instalação do Magento, 20MB para um Wordpress com alguns plugins.

    
por 30.08.2012 / 19:37