Varnish é um acelerador HTTP que fornece ganhos de performance a sites e servidores ao armazenar conteúdo estático em cache. Ele funciona verificando se o conteúdo requisitado está presente em seu cache antes de buscar no servidor web, poupando recursos como I/O de disco, CPU e memória. O documento discute a instalação e configuração do Varnish, bem como ferramentas para monitoramento e solução de problemas.
3. ➔ O que é Varnish
➔ Como funciona
➔ Onde o utilizamos
➔ Intalação e Configuração
➔ Utilitários
➔ Macetes
4. Varnish Cache
Varnish é um acelerador HTTP. Dentre suas
funcionalidades, a principal delas é o cache de
conteúdo estático.
Em alguns cenários sua efetividade provê ganhos
vertiginosos de performance à sites e servidores.
6. Varnish Cache
A forma mais utilizada consiste em deixá-lo rodando na
porta 80, à frente do Apache. Ao receber uma
requisição, o Varnish verifica se o conteúdo requisitado
está presente em seu cache. Se sim, fornece esse
conteúdo diretamente para o cliente. Se não, busca
esse conteúdo no servidor web, o armazena no cache e
o fornece para o cliente.
10. Quando uma requisição é atendida pelo cache do
Varnish, recursos preciosos são poupados no servidor
web, como por exemplo sockets no webserver, I/O de
disco, CPU e memória.
Varnish Cache
11. Servidor de cliente com problema de sobrecarga
● Upgrade de recursos
(Memória, Disco, etc);
● Servidores mais robustos;
● Otimização de aplicação.
16. Cenário de instalação do Varnish:
● Muita leitura de disco;
● Muitas requisições à arquivos estáticos;
● Disponibilidade de memória.
Varnish Cache
17. Onde não se aplica Varnish:
● Alta de manda de processamento por conteúdo
dinâmico.
Varnish Cache
18. Varnish Cache
Além de tê-lo instalado em milhares de
servidores shared e dedicated, temos
Varnish no próprio site da Locaweb onde o
utilizamos com balanceamento com 2
backends rodando Apache2.
19. Varnish Cache
Como já mencionado, o Varnish suporta múltiplos
backends, o que nos permite criar balanceamento de
carga entre os servidores web.
21. Varnish Cache
O balanceamento de carga, contudo, é um recurso
complementar ao cache feito pelo Varnish.
Não utilizamos Varnish para fins de
balanceamento. Para isso temos clusters
com LVS + Heartbeat e Big IP F5.
22. Ao melhorar a performance de websites
com Varnish, demandamos menos
servidores, o que na prática
significa economia financeira e
TI Verde.
Varnish Cache
24. Instalação do Varnish Cache
A instalação do Varnish é simples:
# yum install varnish
# apt-get install varnish
Pacote ‘varnish’ e suas dependências estão presentes nos
melhores repositórios.
25. Varnish Cache
Na Locaweb utilizamos 2 arquivos “vcl”:
● /etc/varnish/backend.vcl = configuramos o(s) backend(s).
● /etc/varnish/locaweb.vcl = configuramos as regras de controle do cache
● Centos: /etc/sysconfig/varnish = configurações para o daemon
● Debian: /etc/default/varnish = configurações para o daemon
O arquivo default.vcl é padrão de configuração do
Varnish, mas nós não o utilizamos.
28. Varnish Cache
O arquivo “locaweb.vcl” contém configurações de
cache do Varnish.
A configuração de VCLs deve possuir ao menos um
subroutine para tratar requisições entrantes e um
segundo subroutine determinando o comportamento
do servidor.
30. Varnish Cache
sub vcl_fetch {
set beresp.ttl = 300s;
set beresp.grace = 300s;
if (beresp.status == 404) {
set beresp.ttl = 0s;
}
if (beresp.status == 500) {
set beresp.ttl = 0s;
}
if (req.request == "GET" && req.url ~ ".(gif|jpg|jpeg|bmp|png|tiff|tif|ico|img|tga|wmf)$") {
unset beresp.http.Set-Cookie;
set beresp.ttl = 600s;
}
31. Varnish Cache
# Maximum number of open files (for ulimit -n)
NFILES=131072
# Maximum locked memory size (for ulimit -l)
# Used for locking the shared memory log in memory. If you increase log size,
# you need to increase this number as well
MEMLOCK=82000
DAEMON_OPTS="-a :80 -f /etc/varnish/locaweb.vcl -u varnish -g varnish -s malloc,4G -T 127.0.0.1:6082 -S
/etc/varnish/secret"
33. Varnish Cache
● varnishstat : Fornece, em tempo real, toda a
informação que você precisa para analisar a
efetividade do cache.
● varnishhist : Fornece uma visão histograma de
cache de acessos.
34. Varnish Cache
● varnishlog : Fornece informações detalhadas sobre
as requisições.
● varnishtop : Lê a memória compartilhada que
varnishd registra e apresenta uma entrada de
registro que ocorrem mais comumente.
35. Varnish Cache
● varnishadm : Prompt de administração do varnish.
Pode ser utilizado para recarregar vcls e urls.
37. Varnish Cache
- Client connections accepted: Incrementado quando é feita uma nova conexão.
- Client requests received: Este é incrementado sempre que as conexões são aceitas.
1039 Cache hits
0 Cache hits for pass
369 Cache misses
Aqui observamos "Cache hits" e "Cache misses". "Cache hits" significa que o arquivo foi servido a partir Varnish, "cache
misses" significa que Varnish teve de buscar o arquivo do backend. O exemplo acima é algo como 1/3 do conteúdo, o
que não é muito bom. "Cache hits for pass" é quando o Varnish recebe uma resposta do backend e descobre que não
pode armazenar esse conteúdo em cache. Ele criará um objeto em cache que registra essa instrução de modo que o
próximo pedido vai receber bypass.
39. Varnish Cache
O gráfico histograma é dividido em duas áreas. Do lado
esquerdo, representado por caractere "pipe", está tudo
aquilo que é atendido pelo cache do Varnish. Do lado
direito, representado pelo caractere "sustenido", está
tudo aquilo que é atendido pelo disco do servidor. Ou
seja, o Varnish foi buscar no backend.