resposta lenta do proxy do squid - otimização

3

Nós usamos o squid 3.0 no Centos5.3 e temos atualmente 20 usuários (Internet Explorer) usando este proxy. O problema é que o acesso através de proxy é mais lento. Até mesmo uma página da web simples, como o google.com (.au), leva 5 seg uma conexão direta sem proxy. Parece que há um atraso de aproximadamente 2-5 segundos. Desativando o cache para google.com (.au) não ajudou. A definição explícita de dns_nameservers não faz diferença.

Parâmetros do servidor: Processador AMD Opteron (tm) de núcleo duplo 2220, 6 GB de memória, disco rígido SCSI de 60 gb

cache_mem 256 MB
cache_dir ufs / usr / local / squid / var / cache 30000 16 256
maximum_object_size_in_memory 256 KB
minimum_object_size 0 KB (0 - 200 KB - não é uma diferença real, o atraso ainda está lá)
maximum_object_size 32 MB

Como você alteraria essas especificações no squid.conf com base nas especificações do servidor? O que pode causar o atraso? Também para uma página maior como yahoo.com.au existe uma maneira de receber uma parte da página do cache e depois o resto (imagens por último). No momento não há nada por 15 segundos e, em seguida, uma página inteira aparece.

    
por Jindrich 06.06.2009 / 07:50

3 respostas

6

Meu primeiro palpite seria farejar o tráfego usando o tcpdump e carregá-lo no wireshark para ver onde o atraso está acontecendo.

tcpdump -i any -s 0 -w /tmp/squid.pcap

(Se você está fazendo isso através do ssh, adicione "not port ssh" ao final.)

Depois de carregar isso no wireshark, você poderá ver onde o atraso parece estar. Eu recomendaria fazer isso durante um período de silêncio, para que não haja muito tráfego obscurecendo sua visualização. Se você puder ser a única pessoa que acessa o proxy no momento, melhor ainda.

Atrasos prováveis são:

  • Proxy de contato do navegador
  • Proxy em contato com o servidor da Web
  • Solicitações de DNS proxy
  • Resposta de retorno do proxy ao navegador
por 06.06.2009 / 07:59
3

Para algumas páginas da Web, não é possível desenhar a página antes que a página inteira seja baixada, imagens e tudo. Para acelerar essa página, existem algumas coisas que você pode fazer:

  • Use o cache da web (como você já é): isso traz imagens mais rapidamente.
  • Use máquinas mais rápidas : a maior parte do tempo pode estar em "composição" - ou seja, colocar a página da web para exibição e não obter as informações.
  • Use navegadores mais rápidos : isso é o mesmo que o anterior. Se estiver usando o IE5, tente o IE6 ou o IE7. Se estiver usando o Firefox 2, experimente o Firefox 3 ou o Safari.

Em tempos passados, eu costumava navegar com o Internet Explorer para Macintosh (68k naqueles dias). Lembro-me bem de ver o ícone do "jornal" que dizia para você esperar enquanto o IE estava computando como exibir a página (não obtendo dados: computando ...)

Outra coisa a ter em conta: algumas páginas solicitarão explicitamente que não sejam armazenadas em cache: cabe ao administrador do cache verificar se essas solicitações foram concedidas ou negadas. Normalmente, essas páginas são aquelas que mudam com frequência ou que o administrador da web não deseja armazenar em outro lugar. Assim, em tal página, você terá uma sobrecarga adicional envolvida, pois o cache da Web deve processar a página em seu nome, mesmo que não haja nenhuma página no cache.

Eu concordaria que farejar o tráfego é uma boa maneira de determinar por que as coisas estão atrasadas. Qual parte do fluxo de rede está causando o atraso?

O Wireshark (e o tcpdump) tem um grande conjunto de filtros que você pode usar para limpar o tráfego: a única razão pela qual você realmente tem que esperar até que um tempo ocioso ocorra para evitar ter um arquivo de despejo TCP massivo. No entanto, você pode obter um conjunto razoável de dados limitando-se ao tráfego de rede de proxy direto:

tcpdump -s 0 -n -w tcpdump.dat port 3128

(a porta 3128 é a porta padrão do squid: use o que for apropriado para você.)

Usando o Wireshark, você pode filtrar instantaneamente com base em um único fluxo de tráfego TCP: assim você não precisa se preocupar com a mistura de diferentes fluxos.

Veja também os logs em / var / log / squid e examine o que está acontecendo com o pedido: ele vem do cache? É proveniente do site remoto? Tente solicitações repetidas: a página é exibida mais rapidamente depois de ser executada uma vez?

    
por 06.06.2009 / 09:10
1

Descobri que era um problema de DNS quando tive exatamente o mesmo problema.

Depois que mudei o servidor DNS no squid.conf para o nosso ISP, o atraso se foi.

    
por 01.12.2010 / 03:14