O maior porco do PHP é, para cada pedido que o intérprete tem que
- buscar o arquivo do sistema de arquivos
- leia
- traduza para o formato executável
- executá-lo
Com APC , você pode pular todas as etapas e ir direto para a execução. Se você tiver problemas de desempenho e, especialmente, depois de observar os resultados de criação de perfil mencionados, instale e configure o APC. Você ficará surpreso com os ganhos de desempenho obtidos.
Eu enfrentei o problema de otimizar um grande conjunto de wikis para a organização Howtopedia ; depois dos comunicados de imprensa, a cobertura do jornal que recebiam era sistematicamente levando a carga do sistema para 100%. Configurar o APC com apenas 25 MB de cache trouxe a carga do sistema diretamente para menos de 5%. Mais alguns ajustes básicos para menos de 1%.
Ao mesmo tempo, uma vez que a maioria das etapas 1 a 3 faz a introdução de latência, o tempo de resposta dos usuários melhorou drasticamente.
Algumas dicas adicionais para o cenário que você descreve:
- conceda à APC um segmento de cache de 25 MB ou mais (verifique se o seu sistema operacional permite segmentos SHM desse tamanho). A política de substituição de cache que o APC usa garante que o conteúdo mais solicitado esteja no cache, portanto, isso provavelmente fornecerá uma taxa de acertos acima de 95%. Aumentar a memória alocada resulta em benefícios exponencialmente menos significativos.
- com o aplicativo predominantemente estático mencionado, desative apc.stat para obter mais desempenho. Isso permite que a APC pesquise arquivos PHP diretamente no cache, sem ter que verificar o sistema de arquivos se eles foram modificados desde a última execução. Cada solicitação é atendida inteiramente da memória, o sistema de arquivos nunca é alcançado, resultando em desempenho dramático.
- depois de ter o APC em execução, o gargalo de desempenho pode passar para o aplicativo. Especialmente, banco de dados e sistema de arquivos, se você usar qualquer um. O Memcached pode ajudá-lo a abordar aqueles com alterações relativamente pequenas no código do seu aplicativo.