Solicitação de alocação de SMS do Varnish gera HTTP 503

2

Às vezes, meu aplicativo retorna um erro HTTP 503 a um cliente. A única pista que tenho é que, quando isso acontece, o Cacti reporta um pico de solicitações de alocação de SMS do Varnish.

Depois de algumas pesquisas, eu posso ter alocado muita memória RAM para o Varnish comparado ao que minha VM tinha. Então eu adicionei 2GB. O verniz foi recarregado desde, mas não reiniciado.

Agora o erro acontece raramente, mas ainda assim.

  • erro 0 no log do aplicativo
  • 0 erro no log do apache

Aqui o gráfico dos cactos com o pico do SMS: link

verniz-3.0.4 no RHEL 6.3

Parâmetros iniciais do verniz:

/ usr / sbin / varnishd -P /var/run/varnish.pid -a: 80 -f /etc/varnish/rc_platform.vcl -T xxx.xxx.xx.xxx:6082 -t 120 -w 1 , 1000,120 -u verniz -g verniz -S / etc / verniz / secreto -s malloc, 6G

Parte interessante do vernizstat

SMA.s0.c_req            14736881         2.26 Allocator requests
SMA.s0.c_fail            4190399         0.64 Allocator failures
SMA.s0.c_bytes      353887517876     54362.00 Bytes allocated
SMA.s0.c_freed      347445180586     53372.37 Bytes freed
SMA.s0.g_alloc            311300          .   Allocations outstanding
SMA.s0.g_bytes        6442337290          .   Bytes outstanding
SMA.s0.g_space            113654          .   Bytes available
SMA.Transient.c_req     15771681         2.42 Allocator requests
SMA.Transient.c_fail           0         0.00 Allocator failures
SMA.Transient.c_bytes 910056978442    139797.31 Bytes allocated
SMA.Transient.c_freed 910056853513    139797.29 Bytes freed
SMA.Transient.g_alloc           52          .   Allocations outstanding
SMA.Transient.g_bytes       124929          .   Bytes outstanding
SMA.Transient.g_space            0          .   Bytes available

Eu tenho uma VM de 10 GB e 6 estão alocados para verniz.

Obrigado.

    
por frenchviking 19.05.2014 / 11:21

1 resposta

0

Você tem uma contagem SMA.s0.c_fail muito alta. Então, o verniz tenta alocar memória e falha. Você pode fazer com que o Varnish seja mais agressivo, aumentando o nuke_limit, que é o número de objetos que o Varnish pode matar ao tentar liberar memória.

Você precisa reiniciar para que as alterações nas configurações de memória entrem em vigor. No entanto, sugiro ter mais memória disponível para o seu servidor. Dar mais memória ao verniz é geralmente barato e inteligente.

Para evitar a falha de um pedido, o Varnish alocará memória temporária para armazenar um objeto. O armazenamento de memória temporária é ilimitado, o que significa que pode potencialmente reduzir o servidor se ele estiver sendo usado em excesso. Você pode limitá-lo se quiser.

    
por 12.06.2014 / 10:26