O Squid pára aleatoriamente de atender pedidos. Como posso resolver esse problema?

1

O proxy squid (2.7) que eu tenho rodando no Ubuntu 8.10 deixa de aceitar novos pedidos depois de ficar online por um tempo, devido a razões que eu não consigo descobrir. No entanto, fazer um squid -k reconfigure resolve o problema imediatamente.

Agora eu manualmente executo este comando, monitorando o log e se eu não vejo nenhuma atividade por 5 minutos eu recarregar a configuração.

Agora, na minha busca por uma solução, tive várias ideias:

  1. diagnostique a causa raiz e elimine-a
  2. configure um script para recarregar automaticamente o script se não houver novas entradas no access.log nos últimos 3 minutos
  3. atualiza meticulosamente o servidor para a versão mais recente do ubuntu, mantendo a rede off-line ou fora do horário para minimizar o tempo de inatividade.

Eu ligo para as soluções para a opção 2), já que não entendo o squid o suficiente para 1), e estou evitando 3) o máximo que puder. Alguma idéia?

    
por Vijay 31.01.2011 / 13:02

2 respostas

1

Eu me deparei com um comportamento similar no squid (isso foi há cerca de 5 anos atrás - nunca cheguei ao fundo dele) mas no meu caso ele iria começar a desacelerar depois de ficar por 2-3 dias.

Algo parecido com isso executado no cron deve fornecer o comportamento necessário para que ele seja bloqueado completamente (supondo que ele pare de gravar nos arquivos de log):

 #!/bin/bash

 LOGFILE=/var/log/cache.log
 # you may need to change the above to point to your logfile
 LASTRUN=/var/local/squidcheck
 # above can be whatever - but dir must exist

 if [ ! -f ${LASTRUN} ] ; then
      touch ${LASTRUN}
 fi
 if [ ${LASTRUN} -nt ${LOGFILE} ] ; then
       /usr/sbin/squid -k reload
 fi
 touch ${LASTRUN}

Isso precisa ser executado como root - assim, no crontab raiz ou no crontab do sistema ...

 */5 * * * * /path/to/shellscript

(note que você não deve editar o arquivo crontab no local - use crontab -l > copy_ctb para obter uma cópia do crontab atual, editá-lo e, em seguida, carregar a nova configuração usando crontab copy_ctb)

    
por 31.01.2011 / 14:27
1

Para teste use wget e http_proxy

http_proxy="http://127.0.0.1:3128" wget http://ya.ru -O /dev/null

Para reiniciar:

http_proxy="http://127.0.0.1:3128" wget http://ya.ru -O /dev/null || squid -k reload
    
por 31.01.2011 / 13:46