Varnish não inicia corretamente (falha após a inicialização) sem mensagens de erro

3

Eu estou executando o Varnish (2.0.4 do Ubuntu instst apt repository, embora eu também tenha usado o repositório padrão) em um ambiente de teste (Virtual Machines) no Ubuntu 9.10, que em breve será 10.04.

Quando eu tenho uma configuração funcional e o servidor inicia com sucesso, parece que está tudo bem, mas se, por alguma razão, eu paro e reinicio o daemon do verniz, ele nem sempre é inicializado corretamente, e não há erros em syslog ou mensagens para indicar o que pode estar errado.

Se eu executar o verniz no modo de depuração ( -d ) e emitir start quando solicitado, então, 7 vezes fora do tempo, ele será executado, mas ocasionalmente será encerrado 'silenciosamente'.

Meu comando de inicialização é (o $ 1 permite que eu passe -d para o script em que ele mora):

varnishd -a :80 $1 \
-T 127.0.0.1:6082 \
-s malloc,1GB \
-f /home/deploy/mysite.vcl \
-u deploy \
-g deploy \
-p obj_workspace=4096 \
-p sess_workspace=262144 \
-p listen_depth=2048 \
-p overflow_max=2000 \
-p ping_interval=2 \
-p log_hashstring=off \
-h classic,5000009 \
-p thread_pool_max=1000 \
-p lru_interval=60 \
-p esi_syntax=0x00000003 \
-p sess_timeout=10 \
-p thread_pools=1 \
-p thread_pool_min=100 \
-p shm_workspace=32768 \
-p thread_pool_add_delay=1

e a VCL se parece com isso:

# nginx/passenger server, HTTP:81
backend default {
.host = "127.0.0.1";
.port = "81";
}

sub vcl_recv {
  # Don't cache the /useradmin or /admin path
  if (req.url ~ "^/(useradmin|admin|session|sessions|login|members|logout|forgot_password)") {
    pipe;
  }

  # If cache is 'regenerating' then allow for old cache to be served
  set req.grace = 2m;

  # Forward to cache lookup
  lookup;
}

# This should be obvious
sub vcl_hit {
  deliver;
}

sub vcl_fetch {
  # See link #16, allow for old cache serving
  set obj.grace = 2m;

  if (req.url ~ "\.(png|gif|jpg|swf|css|js)$") {
    deliver;
  }

  remove obj.http.Set-Cookie;
  remove obj.http.Etag;

  set obj.http.Cache-Control = "no-cache";
  set obj.ttl = 7d;
  deliver;
}

Qualquer sugestão seria muito apreciada, isso está me deixando absolutamente louco, especialmente porque é um comportamento tão inconsistente.

    
por Matthew Savage 15.05.2010 / 09:33

2 respostas

2

Quando o modo de depuração e os arquivos de erro não estão ajudando, o strace é nosso melhor amigo.

Digite strace -f -o strace.out antes do comando start do verniz, para que o strace possa rastrear todas as suas chamadas do sistema.

Então, dê uma olhada no strace.out, especialmente nas últimas linhas. Nessas situações específicas, o strace é sempre uma boa ferramenta para esclarecer o caminho.

Espero que isso ajude.

    
por 15.05.2010 / 14:43
0

Atualize para o 2.1.2

link

Provavelmente você pode usar o alien para instalar a versão do RPM (como um teste) e então mudar o pacote Debian do 2.0 para criar um 2.1.2 .deb

    
por 09.06.2010 / 23:44