Overview sobre
Varnish
$ whoami
@wili4m
➔ wiliam.freitas@locaweb.com.br
➔ https://www.linkedin.com/in/wiliamjf
➔ O que é Varnish
➔ Como funciona
➔ Onde o utilizamos
➔ Intalação e Configuração
➔ Utilitários
➔ Macetes
Varnish Cache
Varnish é um acelerador HTTP. Dentre suas
funcionalidades, a principal delas é o cache de
conteúdo estático....
Como trabalha o Varnish?
Varnish Cache
A forma mais utilizada consiste em deixá-lo rodando na
porta 80, à frente do Apache. Ao receber uma
requisiç...
Varnish Cache
Varnish Cache
Varnish Cache
Quando uma requisição é atendida pelo cache do
Varnish, recursos preciosos são poupados no servidor
web, como por exemplo ...
Servidor de cliente com problema de sobrecarga
● Upgrade de recursos
(Memória, Disco, etc);
● Servidores mais robustos;
● ...
Alguns problemas de
performance podem
ser resolvidos com a
instalação do Varnish.
Estou falando de dinheiro!
Varnish Cache
Cenário de instalação do Varnish:
● Muita leitura de disco;
● Muitas requisições à arquivos estáticos;
● Disponibilidade d...
Onde não se aplica Varnish:
● Alta de manda de processamento por conteúdo
dinâmico.
Varnish Cache
Varnish Cache
Além de tê-lo instalado em milhares de
servidores shared e dedicated, temos
Varnish no próprio site da Locaw...
Varnish Cache
Como já mencionado, o Varnish suporta múltiplos
backends, o que nos permite criar balanceamento de
carga ent...
Varnish Cache
Varnish Cache
O balanceamento de carga, contudo, é um recurso
complementar ao cache feito pelo Varnish.
Não utilizamos Var...
Ao melhorar a performance de websites
com Varnish, demandamos menos
servidores, o que na prática
significa economia financ...
Instalação
Instalação do Varnish Cache
A instalação do Varnish é simples:
# yum install varnish
# apt-get install varnish
Pacote ‘var...
Varnish Cache
Na Locaweb utilizamos 2 arquivos “vcl”:
● /etc/varnish/backend.vcl = configuramos o(s) backend(s).
● /etc/va...
Varnish Cache
VCL = Varnish Cache Language
Varnish Cache
backend.vcl:
backend default {
.host = "192.168.0.100";
.port = "81";
.connect_timeout = 90s;
.first_byte_ti...
Varnish Cache
O arquivo “locaweb.vcl” contém configurações de
cache do Varnish.
A configuração de VCLs deve possuir ao men...
Varnish Cache
sub vcl_recv {
if (req.http.host == "myserver.localhost" && req.url ~ "^/myserver/.*$") {
return(pass);
}
if...
Varnish Cache
sub vcl_fetch {
set beresp.ttl = 300s;
set beresp.grace = 300s;
if (beresp.status == 404) {
set beresp.ttl =...
Varnish Cache
# Maximum number of open files (for ulimit -n)
NFILES=131072
# Maximum locked memory size (for ulimit -l)
# ...
Utilitários
Varnish Cache
● varnishstat : Fornece, em tempo real, toda a
informação que você precisa para analisar a
efetividade do ca...
Varnish Cache
● varnishlog : Fornece informações detalhadas sobre
as requisições.
● varnishtop : Lê a memória compartilhad...
Varnish Cache
● varnishadm : Prompt de administração do varnish.
Pode ser utilizado para recarregar vcls e urls.
Varnish Cache
Varnish Stat
Varnish Cache
- Client connections accepted: Incrementado quando é feita uma nova conexão.
- Client requests received: Est...
Varnish Cache
Varnish Hist
Varnish Cache
O gráfico histograma é dividido em duas áreas. Do lado
esquerdo, representado por caractere "pipe", está tud...
Varnish Cache
Varnish Log
Varnish Cache
Hosts mais acessados
varnishlog -i RxHeader | grep 'Host'
Urls mais acessadas
varnishlog -c | grep RxURL
Varnish Cache
Varnish Top
Varnish Cache
Hosts mais acessados
varnishtop -i RxHeader -I '^Host'
Urls mais acessadas
varnishtop -i RxURL
Varnish Cache
Varnish Adm
Alguns problemas conhecidos
Varnish Cache
Varnish Cache
O serviço Varnish não sobe:
1. Não há memória livre para o Varnish;
2. Erro na configuração de algum arquivo...
Varnish Cache
[root@l50dnn0557][varnish]# /etc/init.d/varnish start
Starting Varnish Cache: [FAILED]
[root@l50dnn0557][var...
Varnish Cache
Próximos passos
● RTFM (Varnish Administrator Documentation):
https://www.varnish-cache.org/docs/trunk/index...
Varnish Cache
Dúvidas?
Overview Sobre Varnish
Overview Sobre Varnish
Próximos SlideShares
Carregando em…5
×

Overview Sobre Varnish

1.281 visualizações

Publicada em

Wiliam Freitas faz um Overview sobre o serviço Varnish. Para quem não o conhece, trata-se de um acelerador HTTP capaz de otimizar a performance de sites e servidores provendo ganho de recursos físicos e financeiros. Dentre suas funcionalidades, destaca-se o serviço de cache de conteúdo estático (que representa grande parte do tráfego web cliente-servidor).
Baixe a apresentação em http://pt.slideshare.net/locaweb/varnish-46050100

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.281
No SlideShare
0
A partir de incorporações
0
Número de incorporações
714
Ações
Compartilhamentos
0
Downloads
7
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Overview Sobre Varnish

  1. 1. Overview sobre Varnish
  2. 2. $ whoami @wili4m ➔ wiliam.freitas@locaweb.com.br ➔ https://www.linkedin.com/in/wiliamjf
  3. 3. ➔ O que é Varnish ➔ Como funciona ➔ Onde o utilizamos ➔ Intalação e Configuração ➔ Utilitários ➔ Macetes
  4. 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.
  5. 5. Como trabalha o Varnish?
  6. 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.
  7. 7. Varnish Cache
  8. 8. Varnish Cache
  9. 9. Varnish Cache
  10. 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. 11. Servidor de cliente com problema de sobrecarga ● Upgrade de recursos (Memória, Disco, etc); ● Servidores mais robustos; ● Otimização de aplicação.
  12. 12. Alguns problemas de performance podem ser resolvidos com a instalação do Varnish.
  13. 13. Estou falando de dinheiro! Varnish Cache
  14. 14. Cenário de instalação do Varnish: ● Muita leitura de disco; ● Muitas requisições à arquivos estáticos; ● Disponibilidade de memória. Varnish Cache
  15. 15. Onde não se aplica Varnish: ● Alta de manda de processamento por conteúdo dinâmico. Varnish Cache
  16. 16. 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.
  17. 17. Varnish Cache Como já mencionado, o Varnish suporta múltiplos backends, o que nos permite criar balanceamento de carga entre os servidores web.
  18. 18. Varnish Cache
  19. 19. 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.
  20. 20. Ao melhorar a performance de websites com Varnish, demandamos menos servidores, o que na prática significa economia financeira e TI Verde. Varnish Cache
  21. 21. Instalação
  22. 22. 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.
  23. 23. 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.
  24. 24. Varnish Cache VCL = Varnish Cache Language
  25. 25. Varnish Cache backend.vcl: backend default { .host = "192.168.0.100"; .port = "81"; .connect_timeout = 90s; .first_byte_timeout = 90s; .between_bytes_timeout = 90s; }
  26. 26. 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.
  27. 27. Varnish Cache sub vcl_recv { if (req.http.host == "myserver.localhost" && req.url ~ "^/myserver/.*$") { return(pass); } if (req.request == "GET" && req.url ~ ".(js)") { return(lookup); } if (req.request == "GET" && req.url ~ ".(gif|jpg|jpeg|bmp|png|tiff|tif|ico|img|tga|wmf)$") { unset req.http.Cookie; return(lookup); }
  28. 28. 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; }
  29. 29. 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"
  30. 30. Utilitários
  31. 31. 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.
  32. 32. 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.
  33. 33. Varnish Cache ● varnishadm : Prompt de administração do varnish. Pode ser utilizado para recarregar vcls e urls.
  34. 34. Varnish Cache Varnish Stat
  35. 35. 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.
  36. 36. Varnish Cache Varnish Hist
  37. 37. 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.
  38. 38. Varnish Cache Varnish Log
  39. 39. Varnish Cache Hosts mais acessados varnishlog -i RxHeader | grep 'Host' Urls mais acessadas varnishlog -c | grep RxURL
  40. 40. Varnish Cache Varnish Top
  41. 41. Varnish Cache Hosts mais acessados varnishtop -i RxHeader -I '^Host' Urls mais acessadas varnishtop -i RxURL
  42. 42. Varnish Cache Varnish Adm
  43. 43. Alguns problemas conhecidos
  44. 44. Varnish Cache
  45. 45. Varnish Cache O serviço Varnish não sobe: 1. Não há memória livre para o Varnish; 2. Erro na configuração de algum arquivo VCL.
  46. 46. Varnish Cache [root@l50dnn0557][varnish]# /etc/init.d/varnish start Starting Varnish Cache: [FAILED] [root@l50dnn0557][varnish]# varnishd -a :80 -f /etc/varnish/locaweb.vcl -u varnish -g varnish -s malloc,4G -T 127.0.0.1:6082 -p send_timeout=3600 -S /etc/varnish/secret Message from VCC-compiler: Expected ';' got '}' (program line 174), at ('input' Line 7 Pos 5) } ----# Running VCC-compiler failed, exit 1 VCL compilation failed
  47. 47. Varnish Cache Próximos passos ● RTFM (Varnish Administrator Documentation): https://www.varnish-cache.org/docs/trunk/index.html ● Varnish Mail Listing: https://www.varnish-cache.org/trac/wiki/MailingLists ● Varnish Group in LinkedIn: https://www.linkedin.com/groups/Varnish-Cache-855677?home=&gid=855677&trk=my_groups-tile-grp
  48. 48. Varnish Cache Dúvidas?

×