Tenho o seguinte problema: ao recuperar uma página do Hackage , recebo um grande atraso (cerca de 30 segundos). Solicitações adicionais são rápidas, mas se eu não conectar a ela por alguns minutos, o problema voltará.
O que é interessante sobre esse problema é:
- é específico para este site específico (Hackage) - não tenho um problema semelhante com nenhum outro site (e visito alguns);
- parece ser específico para meu ISP - quando eu me conecto de outros lugares, não há esse problema;
não está relacionado a problemas de DNS ou conectividade - na verdade, a conexão TCP é estabelecida rapidamente; é a resposta HTTP que demora muito, como pode ser visto na seguinte captura de pacote de amostra:
1 0.000000000 192.168.1.101 -> 66.193.37.204 TCP 66 41518 > http [SYN] Seq=0 Win=13600 Len=0 MSS=1360 SACK_PERM=1 WS=16 2 0.205708000 66.193.37.204 -> 192.168.1.101 TCP 66 http > 41518 [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1440 SACK_PERM=1 WS=128 3 0.205759000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=1 Ack=1 Win=13600 Len=0 4 0.205846000 192.168.1.101 -> 66.193.37.204 HTTP 158 GET /packages/hackage.html HTTP/1.1 5 0.406461000 66.193.37.204 -> 192.168.1.101 TCP 54 http > 41518 [ACK] Seq=1 Ack=105 Win=5888 Len=0 6 28.433860000 66.193.37.204 -> 192.168.1.101 TCP 1494 [TCP segment of a reassembled PDU] 7 28.433904000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=105 Ack=1441 Win=16480 Len=0 8 28.434211000 66.193.37.204 -> 192.168.1.101 HTTP 1404 HTTP/1.1 200 OK (text/html) 9 28.434228000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=105 Ack=2791 Win=19360 Len=0 10 28.434437000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [FIN, ACK] Seq=105 Ack=2791 Win=19360 Len=0 11 28.635146000 66.193.37.204 -> 192.168.1.101 TCP 54 http > 41518 [FIN, ACK] Seq=2791 Ack=106 Win=5888 Len=0 12 28.635191000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=106 Ack=2792 Win=19360 Len=0
( captura de pacotes no formato pcap-ng ). Esta captura mostra o que acontece durante um simples
curl http://hackage.haskell.org/packages/hackage.html
.
Também não importa que eu esteja atrás de um roteador - é o mesmo quando me conecto diretamente. O tipo de conexão é PPPoE.
Reproduzi o problema em 3 computadores que executam Linux e Windows.
Como diagnosticar esse problema?
Respostas:
"30 segundos" e "após dois minutos" são um sinal morto para um problema de DNS para mim.
Se supusermos que a página à qual você está se conectando faz algo como uma consulta DNS no IP de conexão e essa consulta falhar por algum motivo, você verá:
... e esses são exatamente os sintomas que você está descrevendo.
Você pode tentar executar uma consulta DNS de outro ISP (por exemplo, ISP2) no IP obtido do ISP1. Não é 100% prova, mas espero uma alta probabilidade de que a consulta leve 30 segundos para ser concluída. Isso significaria que o servidor DNS do ISP1 está tendo problemas para responder a consultas externas .
Outra causa possível poderia ser o DNS do ISP1 sendo protegido por firewall pelo Hackage por algum motivo (provavelmente errado) (na minha aparência, o motivo seria "um netadmin que aciona o gatilho" e eu poderia nomear nomes). Nesse caso, você teria muito mais dificuldade em diagnosticar, pois qualquer teste pelo ISP2 não retornaria nada incomum; você teria que escalar isso para o Hackage.
fonte
dig +trace -x 80.90.233.38
. Tenho 95% de certeza de que essa é a causa, apenas aguardando a confirmação de que o hackage realmente executa pesquisas reversas no DNS.Problema parece um problema com "MTU". Se você pesquisar no "windows setting mtu" do google, você deverá apresentar várias respostas que mostrarão como testar essa teoria e diminuir o MTU conforme apropriado. (Se você estivesse usando um roteador Linux, eu poderia produzir um comando IPTables para fazer isso dinamicamente para você, mas eu não "faço" o Windows.)
fonte
Repeti sua captura de pacotes, que tem a seguinte aparência:
Efetivamente, há uma pequena pausa indetectável enquanto o pacote é remontado, mas em nenhum lugar enquanto o seu. Eu também verifiquei todos os endereços IP e HTML, e tudo está correto e parece extremamente simples e inofensivo.
Em resumo, não há razão para esse atraso, no que diz respeito à Internet. A conclusão é que há um problema com seu ISP.
O que você pode fazer para diminuir as possibilidades é:
[EDITAR]
Notei que o haskell.org envia um ETag , o que explica por que o primeiro acesso é lento, mas os próximos são rápidos: porque enquanto o ETag é válido, a página realmente vem do cache do seu navegador.
A parte estranha aqui é por que o ISP não é lento ao transmitir uma solicitação ETag. Uma explicação pode ser que, por um tempo limitado, eles atendam à solicitação de seu próprio cache, em vez de acessar o haskell.org.
fonte
Parece um problema no servidor. Carregou rápido para mim. Para testar se o servidor não gosta de você, tente acessá-lo a partir de um proxy, como TOR ou HideMyAss.com. Se for rápido, existe um problema entre o haskell.org e sua casa.
Outro teste que você pode executar é encontrar um recurso nessa visão, como arquivo HTML, CSS ou XML, e passar esse link para um validador HTML etc. Se os serviços de terceiros demorarem muito para serem buscados, então é um problema com o servidor.
Outro teste: limpe o cache do DNS. Pode estar demorando muito para procurar o endereço IP do haskell.org.
ipconfig /flushdns
. Tente tambémping hackage.haskell.org
na linha de comando para ver quanto tempo leva para procurar o endereço IP.Outro teste: abra uma sessão de navegação privada com o Chrome (e outros) para evitar o envio de cookies.
Outro teste: abra a F12 no Chrome ou Opera, vá para a guia Rede e, em seguida, vá para o site para ver a hora de cada recurso.
fonte