PHP APC Utilizando 2.7MB de RAM para arquivos que normalmente usam 16K

1

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.

    
por Steakfest 15.12.2014 / 22:43

0 respostas