APC (acelerador php). Que situações devo usar isso?

1

Então eu tenho apenas um pequeno vps. Eu instalei o apc, que acelerou as páginas normais em 20% - 30%. Eu estava lendo sobre o memcached e cheguei à conclusão de que eu posso usar o apc para a mesma coisa (objetos de cache de resultados de banco de dados) se eu não estou distribuindo sobre outros servidores. Como eu tenho apenas um servidor, o apc será tão benéfico para armazenar coisas na memória.

Ainda estou no modo de desenvolvimento e tenho certeza de que é difícil dizer qual seria o melhor para o modo de produção. O problema é que as consultas do meu banco de dados parecem muito rápidas (entre 0,0008 e 0,002). Nenhuma das minhas páginas é intensiva em banco de dados.

Seria benéfico para mim armazenar em cache os resultados na memória? Se o banco de dados estiver funcionando bem agora, será mais difícil? Além disso, está se conectando ao banco de dados em tudo que custa velocidade (mesmo se eu armazenar em cache a maioria das minhas consultas, cada página tem que ter uma pequena interação de banco de dados para dados de sessão). Então, basicamente, se eu tiver um RAM limitado e uma máquina, usar o apc em vez de apenas deixar o banco de dados não ser armazenado em cache será muito mais rápido?

Idéias?

    
por Matthew 10.05.2010 / 17:02

2 respostas

2

Suas consultas ao banco de dados são rápidas agora. Mas eles escalam? Você já tentou adicionar uma quantidade realista de dados do mundo real e tentar novamente? Essa consulta funciona muito bem com 8 membros, mas terrivelmente com 400.000 membros?

Se armazenar em cache ou não é completamente aplicativo e situação específica. Se você espera que a carga cresça muito e seu gargalo é a CPU, o armazenamento em cache ajudará você, se, por outro lado, seu gargalo for RAM e você estiver usando swap, isso vai te machucar.

Eu não estou realmente fazendo o todo para armazenar em cache ou não para armazenar em cache a justiça da discussão, mas essa é a pergunta básica que você precisa se perguntar.

    
por 10.05.2010 / 17:29
0

É difícil dizer onde o melhor equilíbrio pode ser encontrado. O cache de objetos da APC é geralmente usado para armazenar objetos que demoram relativamente tempo para recriar, por exemplo, conjuntos de resultados de banco de dados que são muito grandes para serem armazenados em cache pelo próprio cache de consulta do banco de dados ou para estruturas de dados temporárias que seriam úteis para persistir entre solicitações do PHP.

Suas consultas ao banco de dados parecem muito rápidas. Se a taxa de acerto do seu cache de consulta estiver na faixa de > 95%, a maioria dos resultados já estará sendo fornecida da memória, e o cache da APC não ajudará muito. Se você fizer algum processamento nos resultados do banco de dados, poderá pagar por armazenar esse resultado na memória.

Conectar-se ao banco de dados é relativamente caro, portanto, reutilizar uma conexão, tornando-a um singleton, é uma boa ideia. Algumas abstrações de banco de dados, como a do Zend Framework, atrasam a conexão real até que seja realmente necessária.

É difícil dar conselhos específicos, pois os benefícios dependem tanto da sua aplicação quanto do seu servidor. Eu sugiro usar um profiler como Xdebug ou Zend Debugger para ver exatamente onde seu tempo está indo. Medir é saber.

    
por 10.05.2010 / 18:09

Tags