terça-feira, 1 de abril de 2014
quarta-feira, 12 de março de 2014
Installing Varnish with libvmod-digest
Tive a necessidade de fazer uma instalação personalizada do varnish com um de seus vmods, logo para facilitar a minha vida em futuras atualizações de pacotes do varnish ou do próprio vmod, eu fiz um script simples para automatizar esse processo, segue abaixo.
Lembrando que o script foi funcional para o meu caso, espero que ele possa ajudar no seu.
terça-feira, 23 de julho de 2013
varnishd invoked oom-killer [ Out Of Memory no Varnish ]
Hoje nos deparamos com um problema que já vinha ocorrendo porém não havia sido pego, mas graças a uma outra monitoração adicionada, foi detectado que o varnish estava consumindo mais memória do que poderia ou tinha disponível para ele, e ocasionando um OOM, segue a saída do dmesg e do syslog:
- dmesg:
[22804397.963962] Out of memory: Kill process 1316 (varnishd) score 976 or sacrifice child
[22804397.976351] Killed process 1316 (varnishd) total-vm:52876488kB, anon-rss:31908748kB, file-rss:0kB
[22811179.340584] varnishd invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
[22811179.340590] varnishd cpuset=/ mems_allowed=0-1
[22811179.340594] Pid: 12535, comm: varnishd Tainted: G C 3.2.0-23-generic #36-Ubuntu
[22811179.340597] Call Trace:
- /var/log/syslog
varnishd invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
- dmesg:
[22804397.963962] Out of memory: Kill process 1316 (varnishd) score 976 or sacrifice child
[22804397.976351] Killed process 1316 (varnishd) total-vm:52876488kB, anon-rss:31908748kB, file-rss:0kB
[22811179.340584] varnishd invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
[22811179.340590] varnishd cpuset=/ mems_allowed=0-1
[22811179.340594] Pid: 12535, comm: varnishd Tainted: G C 3.2.0-23-generic #36-Ubuntu
[22811179.340597] Call Trace:
- /var/log/syslog
varnishd invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
Percebemos após análise que o problema poderia ser referente ao uso do amazenamento transiente: https://www.varnish-cache.org/docs/trunk/users-guide/storage-backends.html#transient-storage
Em nosso caso ele estava setado:
# varnishadm -T localhost:79 param.show shortlived
shortlived 10.000000 [s]
Default is 10.0
Objects created with TTL shorter than this are
always put in transient storage.
E percebemos lendo sobre o armazenamento transiente:
"Transient Storage
If you name any of your storage backend "Transient" it will be used for transient (short lived) objects. By default Varnish would use an unlimited malloc backend for this."
Ou seja, o Varnish irá utilizar toda a memória se não limitarmos, então decidimos por segurança, setar um limite.
Em meu caso, respeitando a regra do: https://www.varnish-cache.org/trac/wiki/Performance
De utilizar:
- -s malloc,(YOURMEMORY-20%)G
Em meu caso, tinha 32GB de memória RAM, então separei 24GB para o malloc, e 2GB para o Transient=malloc, ficando da seguinte forma no /etc/default/varnish:
-s Transient=malloc,2G \
-s malloc,24G \
Aparentemente após essa limitação, nossos problemas com OOM(Out of Memory) acabaram, e a vida voltou ao normal :)
Referências: https://www.varnish-cache.org / http://google.com
Participação/ajuda Especial: Valter Lisboa (GigaNerds) http://giganerds.wordpress.com/
Participação/ajuda Especial: Valter Lisboa (GigaNerds) http://giganerds.wordpress.com/
sexta-feira, 15 de fevereiro de 2013
vclreload varnish reload VCL
Olá,
Fiz alguns ajustes para suprir algumas necessidades que tenho em meu ambiente e o script que basicamente lê a VCL nova e verifica a sintaxe, se houver algum erro, logicamente ela não sobe.
As mudanças que fiz foram:
# Ele pega automaticamente o arquivo vcl a ser compilado, não havendo a necessidade de intervenção manual, logo, se você possui um ambiente com varnishs separados e vcls com nomes diferentes, você pode colocar o script na automação sem se preocupar com ajustes finos :)
FILE=$(grep "\-f" /etc/default/varnish |head -1| awk '{print $2}')
# Aqui ele basicamente pega o valor do varnishadm para poder executar os comandos para carregar a nova vcl.
HOSTPORT=$(grep "\-T" /etc/default/varnish | awk '{print $3}')
Segue o script originalmente criado por Kristian Lyngstol e modificado para minha necessidade.
https://github.com/abargiela/scripts/blob/master/vclreload.sh
Essas modificações foram extremamente úteis para mim, espero que para você também seja :)
apt preferences.d
Ontem tive a necessidade de instalar um pacote específico de um outro repositório, ou seja estava fora do default, então tive que usar o /etc/apt/preferences.d, particularmente eu nunca havia precisado e acho interessante compartilhar pois minha dificuldade, pode ser a sua, e claro deixando aqui, posso consultar no futuro.
Acho que não vale eu reescrever sobre o assunto se temos bem descrito na wiki do debian: http://wiki.debian.org/AptPreferences#A.2Fetc.2Fapt.2Fpreferences
Mas deixarei aqui a minha configuração:
# cat /etc/apt/preferences.d/nginx-package
Package: nginx-extras
Pin: version 1.1.19-1ubuntu0.1
Pin-Priority: 900
Package: nginx-common
Pin: version 1.1.19-1ubuntu0.1
Pin-Priority: 900
Acho que não vale eu reescrever sobre o assunto se temos bem descrito na wiki do debian: http://wiki.debian.org/AptPreferences#A.2Fetc.2Fapt.2Fpreferences
Mas deixarei aqui a minha configuração:
# cat /etc/apt/preferences.d/nginx-package
Package: nginx-extras
Pin: version 1.1.19-1ubuntu0.1
Pin-Priority: 900
Package: nginx-common
Pin: version 1.1.19-1ubuntu0.1
Pin-Priority: 900
quarta-feira, 13 de fevereiro de 2013
Exemplo de .screenrc
Abaixo estou postando meu .screenrc, não temos nada de mais, porém caso eu venha a precisar ou alguém precise, espero que ajude, abs.
deflogin on
autodetach on
defscrollback 5000
bind ^k
bind ^\
bind \\ quit
bind K kill
bind I login on
bind O login off
bind } history
termcapinfo vt100 dl=5\E[M
hardstatus on
hardstatus alwayslastline "%{rk}%H %{gk}%c %{yk}%M%d %{wk}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{wk}%?%+Lw%?"
termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
defnonblock 5
O screen ficará assim:
domingo, 3 de fevereiro de 2013
Script para modificar arquivo(s) via sed
Olá,
Precisei fazer uma modificação em um diretório com vários arquivos e havia feito em linha de comando, coisa simples, porém achei melhor deixar um script feito para futuras necessidades, espero que possa ajudar alguém, e sugestões sempre são bem vindas.
Abaixo o script:
https://github.com/abargiela/scripts/blob/master/change_words_in_files_with_sed.sh
Abs.
Precisei fazer uma modificação em um diretório com vários arquivos e havia feito em linha de comando, coisa simples, porém achei melhor deixar um script feito para futuras necessidades, espero que possa ajudar alguém, e sugestões sempre são bem vindas.
Abaixo o script:
https://github.com/abargiela/scripts/blob/master/change_words_in_files_with_sed.sh
Abs.
Assinar:
Postagens (Atom)
