Centenas de conexões para um servidor, apenas abrindo 10 + abas no IE8?

6

Temos fóruns privados executando o vBulletin e recebemos reclamações de um cliente que tem problemas para acessá-lo quando abre várias guias. A última vez que ele ligou, foi determinado que nosso host havia bloqueado automaticamente seu endereço IP. Depois de abrir um ticket de suporte com o host, eles o desbloquearam e disseram que ele tinha sido bloqueado automaticamente para muitas conexões (presumo que sejam conexões simultâneas). Eles disseram que havia 546 conexões.

O cliente está executando o IE8 e afirma que, após cerca de 8 a 12 guias, o tempo restante "esgotou" - todas as vezes. E, claro, nenhum outro site tem esse problema.

ATUALIZAÇÃO: Acontece que o Chrome (ou o Firefox, mas acho que era o Chrome) tem o mesmo problema. Mas o Opera parece estar bem (estou pensando por causa de seu cache agressivo).

Sem acesso direto aos computadores nas duas extremidades, como posso resolver isso?

    
por DarkTygur 12.07.2010 / 21:20

3 respostas

1

gbroiles já tem uma boa resposta; Estou adicionando uma resposta, pois isso é muito longo para caber em um comentário.

Todos os navegadores abrem várias conexões para baixar o site mais rapidamente. Cada imagem, arquivo CSS, arquivo Javascript etc vinculado no HTML deve ser baixado, e isso é feito em paralelo para acelerar as coisas. Você pode ver quantas conexões cada navegador abre na guia "Rede" do Browserscope.org .

Há mais 2 coisas para notar:

  • A tendência é que nunca os navegadores abram mais conexões por host.
  • Se a conexão for rebaixada para HTTP 1.0 (fx por um proxy intermediário), a maioria dos navegadores abrirá conexões adicionais. (O melhor link que eu poderia encontrar rapidamente é aqui ; Steve Souders escreve mais sobre isso em um de seus livros.)

Na verdade, se esse usuário estiver abrindo 10 ou mais guias em um único servidor VPS pequeno, ele estará acumulando recursos. Eu acho perfeitamente sensato proibir isso. O usuário pode ficar mal-humorado, mas ele só tem um par de olhos, então ele realmente não pode alegar interagir com todas as mais de 10 páginas ao mesmo tempo. Se o servidor é uma máquina grande e robusta com pouca carga, então é outra coisa, é claro.

Algumas das coisas que você pode fazer são:

  • Veja a sua configuração Keepalive de HTTP e desative-a ou defina para um valor de tempo limite baixo (fx 5 segundos). Isso pode não ser suficiente, mas pelo menos você não terá muitas conexões abertas persistentes.
  • Conteúdo estático do host (logotipos, CSS, JS, imagens usadas para layout) em uma Rede de fornecimento de conteúdo (CDN) . Contas CDN pequenas são baratas agora e você direcionaria todas as solicitações HTTP para conteúdo estático para longe do seu próprio servidor.
  • Verifique se o seu servidor está enviando cabeçalhos de cache adequados para conteúdo estático. No mínimo, você não deseja que os usuários façam o download do mesmo logotipo, CSS e muito mais. Veja este excelente tutorial para o armazenamento em cache e o teste seus cabeçalhos em webpagetest.org ou REDbot .
  • Descubra exatamente qual sistema colocou seu cliente na lista negra. Se foi um serviço anti-DDoS do seu ISP, então talvez você possa pedir para ser excluído da proteção anti-DDoS (mas pense nisso primeiro, é claro). Se fosse um firewall de software no host, você poderia pedir que os limites fossem aumentados.

Em suma, você deve conseguir consertar isso junto com seu parceiro de hospedagem, mas primeiro pense primeiro nas possíveis consequências.

    
por 14.07.2010 / 17:45
5

Parece que seu host tem algum tipo de configuração de configuração do anti-DOS e seu cliente está acionando-o abrindo várias guias simultaneamente. Não me surpreende se uma única guia acessando seu sistema esteja abrindo várias sessões HTTP simultâneas para fazer o download de arquivos em paralelo - portanto, se seu cliente tiver 10 abas abertas de uma só vez, como os navegadores mais recentes oferecem, então não é surpresa saber que o cliente está abrindo 10 x várias sessões HTTP para o seu servidor.

O IE 8 abre até 6 sessões simultâneas para o mesmo nome de host .

Se você tiver vários nomes de host configurados como CNAMEs apontando para o mesmo IP (algumas pessoas gostam de configurar, por exemplo, "images.example.com", "css.example.com" e "forums.example.com" , todos apontando para o mesmo host real), você pode estar agravando o problema, tornando difícil para o IE ver que eles são todos a mesma máquina - aparentemente a comparação é feita pelo host NAME , não IP.

Seu cliente provavelmente reduziria a probabilidade de isso ocorrer usando um navegador diferente, usando um cache local, modificando sua instalação do IE para usar menos sessões simultâneas , ou não carregando tantas abas ao mesmo tempo.

Você pode solicitar ao seu host que aumente o número de conexões permitidas para o seu servidor, reduza a janela de tempo para detectar o excesso ou coloque na lista de permissões o (s) seu (s) cliente (s) usando endereços IP previsíveis.

Se o firewall do seu host estiver excluído com base no número de conexões abertas simultâneas, você poderá melhorar a situação certificando-se de que sua configuração está otimizada - por exemplo, minimizando consultas desnecessárias, observando o armazenamento em cache com verniz ou algum outro tipo de acelerador, ativando a compactação, certificando-se de que você está permitindo conexões persistentes de HTTP.

Isso soa como um problema difícil de resolver se você não puder controlar o sistema, fazendo com que as conexões ou o sistema limitem as conexões.

    
por 13.07.2010 / 02:06
0

Como você não pode controlar nem o navegador nem o servidor, você tem duas opções.

1) Assuma o controle do servidor, colocando o site em algo que você tenha mais controle. Isso vai custar-lhe tempo e dinheiro, mas vai ganhar o máximo de controle que você está disposto a pagar. Um servidor em nuvem da Rackspace, um VPS de um provedor recomendado ou apenas hospedagem compartilhada de boa qualidade percorreriam um longo caminho até aqui. Você também pode usar uma solução de fórum hospedada, você não teria muito controle, mas estaria pagando a outra pessoa para se preocupar com coisas como essa.

2) Reduza o número de solicitações sendo feitas. Você pode fazer isso por não ter vários arquivos css ou js, reduzindo o número de imagens, usando sprites de css e, eventualmente, usando um cdn (ou apenas uma máquina separada) para hospedar o máximo possível de imagens externas, javascript e css. Você precisará ser capaz de controlar o seu software de fórum, e eu nunca desenvolvi com o vBulletin, mas certamente deve ser possível - pelo menos em parte.

    
por 14.07.2010 / 17:37