- 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/
Nenhum comentário:
Postar um comentário