Eu tive um aplicativo PHP que estava tendo um desempenho ruim. Eu investiguei a situação e determinei que o cache da APC vai se encher constantemente. Eu aumentei o tamanho do cache do APC para que eu não obtivesse nenhum evento de cache completo, e o aplicativo está funcionando bem.
No entanto ...
Fiquei incomodado com o fato de que esse aplicativo precisava ter tanta memória reservada para o APC. Eu tenho outros aplicativos que são muito semelhantes e eles estão funcionando muito bem com uma configuração padrão de 64M. (Eu tive que ir até 400M para fazer este aplicativo funcionar corretamente)
Então, eu cavei mais fundo usando apc.php e vi algo muito estranho. Dois aplicativos diferentes, ambos usando a mesma biblioteca compartilhada, estavam reportando números de uso de memória drasticamente diferentes para o cache do APC ...
de uma aplicação que não tenha o problema
Filename: tessituraLoginEx2.php Size: 16592
E o aplicativo que está usando toda a RAM extra
Filename: tessituraLoginEx2.php Size: 2717488
Duas aplicações diferentes, ambas usando a mesma biblioteca compartilhada, o aplicativo A usa 16k de RAM para um arquivo, enquanto o aplicativo B usa 2.7MB para o mesmo arquivo exato.
Alguém tem alguma idéia de por que os aplicativos A e B consumiriam tamanhos tão diferentes para o mesmo arquivo?
Informações adicionais
Consegui solucionar o problema alterando a forma como os arquivos problemáticos estavam sendo solicitados no projeto. Os projetos usam uma estrutura, chamando um método auxiliar que eventualmente faz o require_once dos arquivos apropriados do diretório apropriado.
Eu mudei o aplicativo para explicitamente fazer um require_once sem usar o framework e o uso do apc ram bloated foi embora. Ainda não tenho idéia do porque o apc está tendo este problema quando o require ocorre de uma maneira mais compacta / dinâmica. Felizmente, não precisamos mais dessa lógica complexa envolvida em require_once, portanto, essa solução permitirá que eu volte a uma alocação de memória razoável para o apc.
E para esclarecer ... Ambos os aplicativos estavam usando a mesma lógica complexa para fazer o require_once, mas apenas um deles tem o problema do inchaço.
Tags php alternative-php-cache