Back-End

26 dez, 2011

Benchmark do Zend Server CE com Joomla

Publicidade

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:

  1. Usando o Zend Optimizer+ do Zend Server CE vs. APC;
  2. 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/