Memcached e porque devemos nós fazer testes de performance

Devemos sempre fazer os nossos testes de performance quando testamos algo. Nem sempre o que se diz nos fóruns e em sites da especialidade se converte em melhorias caso dos nossos sites em especifico.

E no meu caso cheguei a essa conclusão ao efectuar alguns testes com o Memcached.

Disco SSD da Samsung

Quando desenvolvi o o meu próprio CMS um dos pontos onde me foquei foi na performance, essencialmente na cache e na redução de pedidos ao servidor. Isto permitiu-me reduzir custos e ter vários sites com um total superior a 250 mil visitas mensais a correr num servidor com apenas 2GB de Ram.

E não são sites estáticos, tal como o Mais Gasolina que tem várias actualizações diárias feitas pelos utilizadores, assim como outros sites onde existem API’s a serem consumidas por serviços externos. Mas com a cache é quase como se fossem.

Actualmente uso uma cache em filesystem, são ficheiros estáticos que são lidos pelo PHP que faz algumas verificações sobre os headers a enviar e devolve o conteúdo que já foi guardado com compressão.

Mas depois de muito ler e ver testes de performance onde o Memcached se mostrava superior até em sistemas com discos SSD decidi experimentar. A alteração de código era mínima, em vez de duas verificações para perceber se o ficheiro existia e abrir e ler o ficheiro, ligava-me ao Memcached e recebia os mesmos dados. Na teoria como estava em memória seria muito mais rápido.

Decidi então testar, primeiro com o sistema actual. Fiz vários acessos com browsers diferentes e fiz uma média do tempo de resposta do servidor através dos vários inspectores de cada browser. Depois com o Memcached fiz o mesmo teste.

Certamente depois de tudo o que li iria ser mais rápido mas constantemente os acessos eram mais lentos entre 1 a 2 ms. Ainda pensei, 2GB de Ram é pouco e pode estar a influenciar os meus testes. Graças à virtualização foi fácil colocar o servidor com 4GB de Ram, o dobro. Repeti os testes e o resultado foi o mesmo, mais 1 a 2 ms com Memcached.

Quer isto dizer que o Memcached é lento? Não! Mas eu podia ter-me guiado pela opinião de outras pessoas e pensar para mim próprio: instalei o Memcached, agora os sites estão mais rápidos. No meu caso em concreto o Memcached não compensa, até porque o sistema operativo não é parvo e acaba por colocar os ficheiros mais lidos em memória. O tempo adicional deve-se ao overhead da ligação ao serviço do Memcached, porque tanto os ficheiros estáticos como o conteúdo do Memcached já estavam em memória.

E antes de começarem a remover Memcached, Varnish ou Squid dos vossos servidores ou a enviarem-me emails a dizer que estou errado, percebam que estou a relatar o meu caso em concreto e o Memcached é uma óptima solução, mas não aqui.

Onde quero chegar com este artigo, ou TL;DR, antes de efectuarem alterações de performance testem e façam testes antes e depois de aplicarem essa alteração e comparem os valores. Não basta aceder uma vez, efectuar alterações, aceder novamente e comparar tempos de resposta. É preciso efectuar vários testes, obter uma média e comparar porque existem muitas variáveis em jogo.

Infelizmente ainda vejo developers e sysadmins a seguirem a lógica de aplicar a grande novidade do Github ou o que leram no Stackoverflow como uma verdade absoluta sem testarem se existem melhorias ou não, e isso tem que mudar para o beneficio de todos, mas especialmente dos utilizadores.

 
Copyright © 1985 - 2017 Eduardo Maio. Alguns direitos reservados.
eduardomaio.net - Às vezes mais valia ser Agricultor do que Programador
Ao navegar no blog eduardomaio.net está a concordar com os termos legais e de privacidade.