Zend Server CE é a Edição da Comunidade do Servidor de Aplicação PHP da Zend Technologies. É um ambiente livre que pode ser utilizado para executar aplicações PHP usando recursos adicionais comparados com a versão PHP.net. Alguns desses recursos são:
- Zend Optimizer+, um acelerador de códigos PHP byte
- Zend Data Cache, um sistema de cache de dados para PHP
Usando o Zend Optimizer+, conseguimos acelerar a execução de uma aplicação PHP sem mudar o código. Basicamente, o Optimizer+ é um sistema de cache para o bytecode gerado do interpretador PHP.
O Zend Data Cache é um sistema de cache para PHP e pode ser usado para fazer o cache de variáveis, objetos etc. Isso significa que você tem que modificar seu código para usar esse cache. No entanto, a mudança no código PHP é muito simples e limitada. Para mais informações sobre o Zend Data Cache, sugerimos a leitura do White Paper “A pratical guide to data caching with Zend Server” (pdf em inglês) de Shahar Evron, Gerente de Produtos na Zend Technologies.
Basicamente usando o Zend Server CE conseguimos acelerar a execução de uma aplicação PHP, mas a questão é quanto conseguimos acelerar? A resposta depende da aplicação PHP e comparada a quê.
Neste artigo, executei um benchmark do Joomla, o famoso CMS escrito em PHP, usando Zend Server CE vs. APC e Memcached. Para executar esse benchmark, eu trabalhei em conjunto com Renato Salvatori da Cost, uma empresa de TI especializada em Joomla.
Em detalhes, executamos o benchmark em duas fases:
- Usando o Zend Optimizer+ do Zend Server CE vs. APC;
- Usando o mecanismo de cache do Joomla nos seguintes backends: File, Memcached, APC e Zend Server CE (usando File e Shared Memory).
Pra conseguir usar o cache do Joomla com o Zend Server, usamos um plugin escrito por mim e por Renato Salvatori – você pode fazer o download no fim do post.
Metodologia do benchmark
Usamos a instalação padrão do Joomla 1.5.17 utilizando os dados de exemplo para o conteúdo do site. Testamos a homepage do Joomla usando Apache Benchmark (ab) com 100 pedidos e 10 usuários simultâneos (-n 100 -c 10). Executamos cada experimento 6 vezes e pegamos a média dos resultados. Medimos o tempo por pedido (o que significa através de todos os pedidos simultâneos em ms) e a taxa de transferência (Kbyte/sec).
Todos os experimentos mostrados neste artigo foram executados usando CPU Intel Core 2 a 2.10 Ghz com 2 GB de RAM executando Gnu/Linux OS com kernel 2.6.28 . Usamos a seguinte configuração de software: Zend Server 5 CE, Apache 2.2.11, PHP 5.3.2, Joomla 1.5.17, Memcached 1.4.5, APC 3.1.3p1, MySQL 5.0.45.
APC vs Zend Optimizer+
No primeiro passo do experimento, executamos o benchmark com o cache do Joomla desabilitado. Testamos o tempo de reposta da homepage com e sem o acelerador bytecode do Zend Optimizer+ e APC. Os resultados estão na tabela 1.
tempo por pedido – através de todos os pedidos simultâneos (ms) | taxa de transferência (Kbyte/sec) | |
Sem Cache, sem Optimizer+, sem APC | 114,017 | 286,87 |
Sem Cache, APC | 80,135 | 408,27 |
Sem Cache, Optimizer+ | 71,019 | 460,70 |
Tabela 1: Tempos de resposta do Joomla usando aceleradores PHP
Os resultados mostram que o Zend Optimizer+ é o mais rápido. Usando Zend Server 5 CE, o Joomla roda 60% mais rápido que PHP.net (sem acelerador) e 13% mais rápido que o APC. Reportamos os resultados das taxas de transferência na Figura 1 (maior valor significa melhor performance).
Figura 1: Taxa de Transferência (Kbyte/sec)
Experimento de cache de dados
No segundo passo do experimento, executamos o benchmark usando os plugins caching do Joomla nos seguintes sistemas de caching: File, APC, Memcached, Zend Server CE (arquivo), Zend Server CE (Shared Memory). Dividimos o experimento em duas partes: O primeiro usando o acelerador de bytecode APC, e o segundo usando o acelerador de códigos Zend Optimizer+. Abaixo, reportamos os resultados desse experimento (Tabelas 2 e 3).
tempo por pedido, meio através de todos os pedidos atuais (ms) | taxa de transferência (Kbyte/sec) | |
Cache: File | 53,383 | 612,91 |
Cache: APC | 49,275 | 664,23 |
Cache: Memcached | 50,507 | 647,73 |
Cache: ZendServer file | 51,541 | 634,51 |
Cache: ZendServer shm | 46,527 | 703,50 |
Tabela 2: Resultados com APC habilitado, e Zend Optimizer+ desabilitado
Como você pode ver, o melhor resultado, em termos de performance, vem com o uso do Zend Server CE (com sistema de cache de memória compartilhada, shm). O Zend Server CE é 14% mais rápido que o File, 9% mais rápido que o Memcached, e 6% mais rápido que o APC.
tempo por pedido, meio através de todos os pedidos atuais (ms) | taxa de transferência (Kbyte/sec) | |
Cache: File | 40,716 | 803,54 |
Cache: APC | 38,898 | 841,13 |
Cache: Memcached | 39,058 | 837,90 |
Cache: ZendServer file | 39,102 | 836,95 |
Cache: ZendServer shm | 36,531 | 895,79 |
Tabela 3: Resultados com APC desabilitado, Zend Optimizer+ habilitado
Os mesmos resultados vêm com o Zend Optimizer+ habilitado e com o APC desabilitado. O sistema de caching mais rápido é o Zend Server CE com Shared Memory. Zend Server CE é 11% mais rápido que o File, 7% mais rápido que o Memcached, e 6% mais rápido que o APC
Se compararmos os resultados de cache de dados usando APC ou Zend Optimizer+, descobrimos que os melhores resultados vêm com o Zend Optimizer, o sistema de caching de dados do Joomla roda 35% mais rápido comparado com o APC (figura 2; maior valor significa melhor performance).
Figura 2: Taxa de transferência (Kbyte/sec)
Resumindo, usando o Zend Optimizer+ e o Data Cache of Zend Server CE, você pode acelerar o processo da execução do Joomla de 60% para 300% comparado com PHP.net (sem acelerador), e de 13% para 35% comparado com o APC.
O plugin caching do Joomla para Zend Server CE
Para possibilitar o uso do caching de dados do Zend Server CE com o Joomla, você tem que instalar o plugin joomla_zendserver.zip. Você pode fazer o download aqui.
A instalação desse novo plugin é muito fácil, você só tem que abrir o arquivo zendserver.tar.gz e copiar os arquivos zendserver_disk.php e zendserver_shm.php na pasta libraries/joomla/cache/storage/ do Joomla.
Depois disso, você pode escolher o cache handler Zendserver_disk e Zendserver_shm a partir da aba do Sistema no menu de Configuração Global na interface administrativa do Joomla. É isso aí!
Conclusão
Neste artigo, mostramos que o Zend Server CE é o PHP stack mais rápido para executar aplicativos Joomla. Os benefícios, e termos de performance, são ótimos: é 35% mais rápido que o APC e até 300% do que o PHP.net (sem aceleradores).
Se você estiver interessado em outros benchmarks do Zend Server CE, você pode ler o White Paper “Optimizing Drupal Performance” (pdf, inglês), de Acquia e Zend Technologies.
No futuro, eu gostaria de executar mais benchmarks no Zend Server CE usando outros softwares open source do PHP.Se você tiver alguma proposta, por favor a adicione nos comentários.
?
Texto original disponível em http://www.zimuel.it/blog/2010/06/benchmarking-zend-server-ce-with-joomla/