Random 502 errors with Varnish

1

Eu tenho um verniz 4 na frente de um servidor web Apache. Tudo está bem, exceto que eu tenho alguns erros 502 aleatórios.

O que é estranho é que não há nada no arquivo varnishlog para este erro! (todas as outras solicitações são registradas)

Meus parâmetros:  VARNISH_MIN_THREADS = 50  VARNISH_MAX_THREADS = 1000  VARNISH_THREAD_TIMEOUT = 120

O que eu posso fazer para corrigir isso?

Meu default.vcl:

vcl 4.0;

backend default {
  .host = "127.0.0.1";
  .port = "8055";
}

backend php53 {
  .host = "127.0.0.1";
  .port = "8053";
}

sub vcl_recv {
  # Compatiblity with Apache log
  if (req.http.X-Forwarded-For) {
    set req.http.X-Forwarded-For = client.ip;
  } else {
    set req.http.X-Forwarded-For = client.ip;
  }

  if (
    req.http.Host ~ "site1" ||
    req.http.Host ~ "site2")
  {
    set req.backend_hint = php53;
  }

  if (req.http.Host ~ "mainsite" ){
    if (req.method == "POST") {
       return (pipe);
    }
    if (req.method == "GET" && (req.url ~ "^/admin")) {
       return (pass);
    }
  }

  if (req.method != "GET" && req.method != "HEAD")
  {
    return (pass);
  }

  if (req.url ~ "(?i)\.(jpeg|jpg|png|gif|ico)$") {
    unset req.http.Cookie;
    return (hash);
  } else {
    return (pass);
  }
}
sub vcl_backend_response {
   if (beresp.http.Content-Length !~ "[0-9]{7,10}") {
     return(deliver);
   }
}

eu tenho 502 erros em 'mainsite' (prestashop ecommerce, com muitas imagens)

Meu status atual:

MAIN.uptime 151353 1.00 Tempo de atividade do processo filho MAIN.sess_conn 59309 0.39 Sessões aceites

MAIN.sess_drop 0 0.00 Sessões perdidas

MAIN.sess_fail 0 0.00 Session accept failures

MAIN.backend_conn 24076 0,16 Conn. sucesso

MAIN.backend_unhealthy 0 0.00 Backend conn. não tentou

MAIN.backend_busy 0 0.00 conn. muitos

MAIN.backend_fail 85 0.00 Backend conn. falhas

MAIN.backend_reuse 53606 0,35 Backend conn. reutiliza

MAIN.backend_toolate 11249 0.07 Backend conn. foi fechado

MAIN.backend_recycle 64856 0,43 Backend conn. recicla

MAIN.backend_retry 0 0.00 Backend conn. tente novamente

PRINCIPAIS.reads 100. Número total de threads

MAIN.threads_created 108 0.00 Threads criados

MAIN.threads_destroyed 8 0.00 Tópicos eliminados

MAIN.threads_failed 0 0.00 Falha na criação de tópicos

MAIN.busy_sleep 3 0.00 Número de pedidos enviados para dormir em ocupado objhdr

MAIN.busy_wakeup 3 0.00 Número de pedidos acordados após dormir em objhdr ocupado

MAIN.sess_queued 11 0.00 Sessions enfileiradas para thread

ps aux | grep -i verniz | grep -v grep:

root     22319  0.0  0.5 121896 84060 ?        SLs  12:21   0:00 /usr/sbin/varnishd -P    /var/run/varnish.pid -a :80 -f /etc/varnish/default.vcl -T 127.0.0.1:6082 -t 120 -p thread_pool_min=50 -p thread_pool_max=1000 -p thread_pool_timeout=120 -u varnish -g varnish -S /etc/varnish/secret -s malloc,1G
varnish  22321  0.4  0.5 321348 92604 ?        Sl   12:21   0:00 /usr/sbin/varnishd -P /var/run/varnish.pid -a :80 -f /etc/varnish/default.vcl -T 127.0.0.1:6082 -t 120 -p thread_pool_min=50 -p thread_pool_max=1000 -p thread_pool_timeout=120 -u varnish -g varnish -S /etc/varnish/secret -s malloc,1G
    
por griotteau 01.07.2014 / 09:36

1 resposta

0

você examinou o log de erros do apache para "mainsite"?

colar a saída de:

ps aux | grep -i varnish | grep -v grep

E veja se o tamanho do seu malloc não é grande para atender grandes conteúdos

Experimente: beresp.http.Content-Length !~ "keep this size small" (se for esse o caso) Nota: mude isso para regex para atender a sua necessidade onde diz manter este tamanho pequeno

e verifique se você ainda recebe esse erro,

    
por 02.07.2014 / 11:33

Tags