SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
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.
Em alguns cenários sua efetividade provê ganhos
vertiginosos de performance à sites e servidores.
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çã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.
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 sockets no webserver, I/O de
disco, CPU e memória.
Varnish Cache
Servidor de cliente com problema de sobrecarga
● Upgrade de recursos
(Memória, Disco, etc);
● Servidores mais robustos;
● Otimização de aplicação.
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 de memória.
Varnish Cache
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 Locaweb onde o
utilizamos com balanceamento com 2
backends rodando Apache2.
Varnish Cache
Como já mencionado, o Varnish suporta múltiplos
backends, o que nos permite criar balanceamento de
carga entre os servidores web.
Varnish Cache
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.
Ao melhorar a performance de websites
com Varnish, demandamos menos
servidores, o que na prática
significa economia financeira e
TI Verde.
Varnish Cache
Instalação
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.
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.
Varnish Cache
VCL = Varnish Cache Language
Varnish Cache
backend.vcl:
backend default {
.host = "192.168.0.100";
.port = "81";
.connect_timeout = 90s;
.first_byte_timeout = 90s;
.between_bytes_timeout = 90s;
}
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.
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);
}
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;
}
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"
Utilitários
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.
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.
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: 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.
Varnish Cache
Varnish Hist
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.
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 VCL.
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
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
Varnish Cache
Dúvidas?

Contenu connexe

Tendances

Tendances (19)

Instalação e configuração servidor dns - ubuntu server
Instalação e configuração servidor dns - ubuntu serverInstalação e configuração servidor dns - ubuntu server
Instalação e configuração servidor dns - ubuntu server
 
Oficina de Squid: Filtros Inteligentes
 Oficina de Squid: Filtros Inteligentes Oficina de Squid: Filtros Inteligentes
Oficina de Squid: Filtros Inteligentes
 
Servidor Proxy Squid
Servidor Proxy SquidServidor Proxy Squid
Servidor Proxy Squid
 
Varnish3, plone4: discutindo a relação
Varnish3, plone4: discutindo a relaçãoVarnish3, plone4: discutindo a relação
Varnish3, plone4: discutindo a relação
 
Dhcp
DhcpDhcp
Dhcp
 
Relatório de configuração e instalação do dns no ubuntu 1
Relatório de configuração e instalação do dns no ubuntu 1Relatório de configuração e instalação do dns no ubuntu 1
Relatório de configuração e instalação do dns no ubuntu 1
 
Varnish3, Plone4: Discutindo a Relação
Varnish3, Plone4: Discutindo a RelaçãoVarnish3, Plone4: Discutindo a Relação
Varnish3, Plone4: Discutindo a Relação
 
Servidor proxy Squid
Servidor proxy SquidServidor proxy Squid
Servidor proxy Squid
 
Servidor DNS- BIND
Servidor DNS- BINDServidor DNS- BIND
Servidor DNS- BIND
 
Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)
 
Aula dns
Aula dnsAula dns
Aula dns
 
05 servidor dhcp
05   servidor dhcp05   servidor dhcp
05 servidor dhcp
 
Aula 2
Aula 2Aula 2
Aula 2
 
Aula 4 infraestrutura - 14012012
Aula 4   infraestrutura - 14012012Aula 4   infraestrutura - 14012012
Aula 4 infraestrutura - 14012012
 
Escalando Sites com Nginx
Escalando Sites com NginxEscalando Sites com Nginx
Escalando Sites com Nginx
 
Dhcp
DhcpDhcp
Dhcp
 
07 - Atividade III
07 - Atividade III07 - Atividade III
07 - Atividade III
 
pfSense - Proxy com arquivo arquivo pac e wpad
pfSense - Proxy com arquivo arquivo pac e wpadpfSense - Proxy com arquivo arquivo pac e wpad
pfSense - Proxy com arquivo arquivo pac e wpad
 
GlusterFs
GlusterFsGlusterFs
GlusterFs
 

Similaire à Overview Sobre Varnish

Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxThiago Paes
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresDouglas V. Pasqua
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheDell Technologies
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Bruno Pedro
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Tiago Hillebrandt
 
Instalação e configuração apache Ubuntu Server
Instalação e configuração apache Ubuntu ServerInstalação e configuração apache Ubuntu Server
Instalação e configuração apache Ubuntu ServerAparicio Junior
 
Project HA
Project HAProject HA
Project HAKarpv
 
Atividade sistema operacionais
Atividade sistema operacionaisAtividade sistema operacionais
Atividade sistema operacionaisCarlos Melo
 
Tópicos - Cluster de Balanceamento de Carga com DNS
Tópicos - Cluster de Balanceamento de Carga  com  DNSTópicos - Cluster de Balanceamento de Carga  com  DNS
Tópicos - Cluster de Balanceamento de Carga com DNSLuiz Arthur
 
Rodando PHP em um container Java
Rodando PHP em um container JavaRodando PHP em um container Java
Rodando PHP em um container Javanetinhoteixeira
 
Desenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisDesenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisManuel Lemos
 
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugarUtilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugarmeetupwordpressfln
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory gigadrop
 

Similaire à Overview Sobre Varnish (20)

Apache
ApacheApache
Apache
 
Varnish cache
Varnish cacheVarnish cache
Varnish cache
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
06 - Servidor Apache
06 - Servidor Apache06 - Servidor Apache
06 - Servidor Apache
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedores
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)
 
Dreamweaver m18
Dreamweaver m18Dreamweaver m18
Dreamweaver m18
 
Apache htaccess
Apache htaccessApache htaccess
Apache htaccess
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
 
Instalação e configuração apache Ubuntu Server
Instalação e configuração apache Ubuntu ServerInstalação e configuração apache Ubuntu Server
Instalação e configuração apache Ubuntu Server
 
Project HA
Project HAProject HA
Project HA
 
Atividade sistema operacionais
Atividade sistema operacionaisAtividade sistema operacionais
Atividade sistema operacionais
 
Tópicos - Cluster de Balanceamento de Carga com DNS
Tópicos - Cluster de Balanceamento de Carga  com  DNSTópicos - Cluster de Balanceamento de Carga  com  DNS
Tópicos - Cluster de Balanceamento de Carga com DNS
 
Rodando PHP em um container Java
Rodando PHP em um container JavaRodando PHP em um container Java
Rodando PHP em um container Java
 
Desenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveisDesenvolvendo aplicativos web escaláveis
Desenvolvendo aplicativos web escaláveis
 
Tcc anexo i
Tcc   anexo iTcc   anexo i
Tcc anexo i
 
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugarUtilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory
 

Plus de Locaweb

Random testing
Random testingRandom testing
Random testingLocaweb
 
Princípios de Concorrência em Ruby e Além
Princípios de Concorrência em Ruby e AlémPrincípios de Concorrência em Ruby e Além
Princípios de Concorrência em Ruby e AlémLocaweb
 
AngularJS
AngularJSAngularJS
AngularJSLocaweb
 
Celery for SysAdmins
Celery for SysAdminsCelery for SysAdmins
Celery for SysAdminsLocaweb
 
Testes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsTestes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsLocaweb
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvccLocaweb
 
Tech talkrubocop
Tech talkrubocopTech talkrubocop
Tech talkrubocopLocaweb
 
Ambient Light Events- Wylkon Queiroz
Ambient Light Events- Wylkon QueirozAmbient Light Events- Wylkon Queiroz
Ambient Light Events- Wylkon QueirozLocaweb
 
Lua tech talk
Lua tech talkLua tech talk
Lua tech talkLocaweb
 
Uso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlUso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlLocaweb
 
Linux cgroups and namespaces
Linux cgroups and namespacesLinux cgroups and namespaces
Linux cgroups and namespacesLocaweb
 
Sistemas Distribuidos
Sistemas DistribuidosSistemas Distribuidos
Sistemas DistribuidosLocaweb
 
Soluções para sua empresa vender na Internet
Soluções para sua empresa vender na InternetSoluções para sua empresa vender na Internet
Soluções para sua empresa vender na InternetLocaweb
 
Comercio eletronico - Dicas práticas
Comercio eletronico - Dicas práticasComercio eletronico - Dicas práticas
Comercio eletronico - Dicas práticasLocaweb
 
API Do Email Marketing Locaweb
API Do Email Marketing LocawebAPI Do Email Marketing Locaweb
API Do Email Marketing LocawebLocaweb
 

Plus de Locaweb (16)

Random testing
Random testingRandom testing
Random testing
 
Princípios de Concorrência em Ruby e Além
Princípios de Concorrência em Ruby e AlémPrincípios de Concorrência em Ruby e Além
Princípios de Concorrência em Ruby e Além
 
AngularJS
AngularJSAngularJS
AngularJS
 
Celery for SysAdmins
Celery for SysAdminsCelery for SysAdmins
Celery for SysAdmins
 
Testes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsTestes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJs
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 
Freenas
FreenasFreenas
Freenas
 
Tech talkrubocop
Tech talkrubocopTech talkrubocop
Tech talkrubocop
 
Ambient Light Events- Wylkon Queiroz
Ambient Light Events- Wylkon QueirozAmbient Light Events- Wylkon Queiroz
Ambient Light Events- Wylkon Queiroz
 
Lua tech talk
Lua tech talkLua tech talk
Lua tech talk
 
Uso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlUso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sql
 
Linux cgroups and namespaces
Linux cgroups and namespacesLinux cgroups and namespaces
Linux cgroups and namespaces
 
Sistemas Distribuidos
Sistemas DistribuidosSistemas Distribuidos
Sistemas Distribuidos
 
Soluções para sua empresa vender na Internet
Soluções para sua empresa vender na InternetSoluções para sua empresa vender na Internet
Soluções para sua empresa vender na Internet
 
Comercio eletronico - Dicas práticas
Comercio eletronico - Dicas práticasComercio eletronico - Dicas práticas
Comercio eletronico - Dicas práticas
 
API Do Email Marketing Locaweb
API Do Email Marketing LocawebAPI Do Email Marketing Locaweb
API Do Email Marketing Locaweb
 

Overview Sobre Varnish

  • 2. $ whoami @wili4m ➔ wiliam.freitas@locaweb.com.br ➔ https://www.linkedin.com/in/wiliamjf
  • 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.
  • 5. Como trabalha o Varnish?
  • 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.
  • 12. Alguns problemas de performance podem ser resolvidos com a instalação do Varnish.
  • 13. Estou falando de dinheiro! Varnish Cache
  • 14.
  • 15.
  • 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.
  • 26. Varnish Cache VCL = Varnish Cache Language
  • 27. Varnish Cache backend.vcl: backend default { .host = "192.168.0.100"; .port = "81"; .connect_timeout = 90s; .first_byte_timeout = 90s; .between_bytes_timeout = 90s; }
  • 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.
  • 29. 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); }
  • 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.
  • 41. Varnish Cache Hosts mais acessados varnishlog -i RxHeader | grep 'Host' Urls mais acessadas varnishlog -c | grep RxURL
  • 43. Varnish Cache Hosts mais acessados varnishtop -i RxHeader -I '^Host' Urls mais acessadas varnishtop -i RxURL
  • 47. 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.
  • 48. 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
  • 49. 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