Efeito da distância do servidor na velocidade de carregamento da página

4

Medi a velocidade de carregamento de um arquivo de imagem estática separado pelo nginx do meu servidor (usando o serviço pingdom). O servidor normalmente deve processar essa solicitação dentro de alguns segundos. Meu servidor está localizado em Dallas, TX. Quando eu usei servidor de pingdom Dallas, demorou 200ms para carregar o arquivo. Isso inclui a resolução de DNS e a transferência de dados. Obviamente, para uma transferência mais longa, isso deve levar mais tempo; mas, surpreendentemente, esse valor foi de 800 ms para a cidade de Nova York e de 1,5 para Amsterdã.

A aparente conclusão é o papel da distância para a transferência de dados do servidor para a máquina do cliente, e nada conectado ao desempenho do meu servidor. No entanto, quando eu verifiquei essa diferença para grandes sites como o google e bing; a diferença foi de apenas 50% (por exemplo, 200ms para os EUA e 300s para a Europa).

Há algo a ser melhorado no meu servidor para solicitações de longa distância do servidor?

    
por Googlebot 05.01.2012 / 13:29

6 respostas

7

+1 para o Chopper3, mas também gostaria de explicar uma coisa.

A distância geográfica tem menos a ver com a transferência do que você imagina.

O que importa:

  1. O peering do seu provedor
  2. peering do seu ISP
  3. O caminho entre os pares
  4. modelagem de tráfego

Exemplo 1: Na minha universidade, obtemos nossa internet por meio de um provedor estatal. Este ISP tem sua própria rede e colegas em Chicago. Portanto, a fim de se conectar a uma casa na estrada, a conexão precisa ir até Chicago. Assim, é muito mais rápido se comunicar com algo em Chicago do que se conectar a algo no futuro.

Eu acho que você precisa pensar nisso como estradas e não como o corvo voa. Só porque algo está mais perto, não significa que esteja realmente mais perto da internet. Também não significa que seja mais rápido. Isso é extremamente exagerado com a internet. Por exemplo, se um único "caminho livre" entre dallas e NYC estiver sendo saturado, pode ser mais rápido transferir da europa para dallas.

    
por 05.01.2012 / 17:14
13

Essas grandes empresas têm data centers dispersos geograficamente, então você está sendo respondido por um site mais próximo de você do que de um site central - isso é tudo.

    
por 05.01.2012 / 13:38
5

Você deve experimentar serviços CDN (Content Delivery Network). Isso ajuda a reduzir a latência de usuários localizados longe do servidor. Para mais informações visite o site maxcdn. Você encontrará os detalhes necessários em relação ao seu problema.

    
por 05.01.2012 / 13:44
2

A palavra-chave é latência. Depende de quando você precisa de muitas interações pequenas para acessar seu conteúdo ou se há apenas uma grande transferência em massa.

O primeiro será afetado pela latência, o segundo não tanto.

Exemplo:

Se houver 1000 transações pequenas com uma latência de 0,01 s cada, você precisará de 10s para que as transações sejam concluídas. O fator constante é a carga útil dividida pela largura de banda disponível. A latência "local" pode ser de fator 10 menor (0,001s de latência) - > 1s para todo o grupo - isso parece rápido o suficiente para um usuário.

Agora, se você puder entregar a mesma carga útil com apenas duas transações, os 0,02s não serão importantes.

Então a resposta é: Reduzir o número de transações de TCP necessárias para entregar sua carga útil.

    
por 05.01.2012 / 22:53
2

Qual é o tamanho do seu arquivo de teste?

Não esqueça que o efeito do TCP slow start significa que a latência desempenha um grande papel na redução das conexões iniciais.

Tenha uma leitura de "O mito da banda larga" no link

Atualmente, dependendo da versão que você está executando, você pode aumentar o initcwnd no servidor Linux e Windows para reduzir alguns dos efeitos de latência.

    
por 10.01.2012 / 13:15
1

Esteja ciente de que um carregamento de imagens não é representativo de todo o site. O atraso transatlântico inevitável afetará cada elemento carregado como um adicional de 90ms (YMMV) ou mais, não como uma porcentagem de cada solicitação. Isso significa que itens maiores não serão afetados "pior" do que itens menores.

Além da primeira solicitação, algumas de suas solicitações ocorrerão em paralelo (por exemplo, um borowser poderá carregar 3 ou 4 imagens em seu site e no CSS simultaneamente), portanto, esses atrasos serão menos sentidos pelo usuário.

Dito isto, as CDNs são uma boa maneira de reduzir esses atrasos e são muito fáceis de usar para recursos estáticos, como imagens e CSS. Eles também não são caros.

    
por 05.01.2012 / 14:33