Diagnosticando um atraso de 2 minutos na solicitação HTTP GET

Diagnosticando um atraso de 2 minutos na solicitação HTTP GET

Em circunstâncias restritas, obtenho um atraso 100% reproduzível de aproximadamente 2 minutos quando solicito uma página da web pública.

A página em questão:https://id.openjdk.java.net/console/login

Unindo os logs do cliente (curl) e do servidor (apache), uma troca típica se parece com isto:

[client] 15:42:03.694959 => Send header, 96 bytes (0x60) 0000: GET /console/login HTTP/1.1
<DELAY HERE>
[server] [24/Feb/2015:22:44:26 +0000] "GET /console/login HTTP/1.1"
[client] 15:44:25.984150 <= Recv header, 17 bytes (0x11) 0000: HTTP/1.1 200 OK

(As horas são diferentes devido aos fusos horários e os segundos podem estar ligeiramente errados devido a relógios fora de sincronia.)

Coisas que são importantes:

  • O cliente está conectado através do meu ISP doméstico e recebe um endereço IP público em uma sub-rede específica. Dado um endereço IP estático de um intervalo diferente, o problema desaparece.
  • A página '/console/login' neste servidor é solicitada. Não haverá atraso se eu solicitar 'console/forgotPassword'. Não notei um atraso semelhante em nenhum outro servidor.

Coisas que (aparentemente) não são relevantes:

  • Rede doméstica. O problema persiste independentemente de como o cliente se conecta ao modem do ISP e ao tentar modems diferentes.
  • Hora do dia/congestionamento. O atraso é consistente, não importa quando a solicitação ocorre.
  • DNS. O comportamento é o mesmo se eu usar um endereço IP em vez de um nome de host.
  • Aperto de mão HTTPS. Esta parte da interação 'curl' sempre ocorre sem demora; e não há atraso ao acessar 'console/forgotPassword' via HTTPS.
  • Configuração do cliente. Reproduzível em vários navegadores e via 'curl' na linha de comando. Reproduzível em vários sistemas clientes e sistemas operacionais.
  • Imagem/roteiro/etc. carregando. O atraso ocorre ao usar 'curl', que não solicita recursos extras.

Minha pergunta: qual é a explicação mais plausível para isso? Ou: o que devo fazer a seguir para diagnosticá-lo?

Problemas do servidor? Pelo que entendiFormato de log do Apache, o atraso está ocorrendoanteso servidor recebe a solicitação GET, mas eu agradeceria se alguém pudesse confirmar que essa é a maneira correta de ler os carimbos de data/hora do log. Nesse caso, não está claro para mim o que o servidor pode estar fazendo antes de enviar a solicitação ao httpd, ou o que o httpd pode estar fazendo antes de obter um carimbo de data/hora.

Problemas de rede? A parte complicada aqui é que o atraso aparentemente depende do conteúdo da mensagem no nível do aplicativo: a página específica que está sendo solicitada. E isso deve ser criptografado. Os administradores do ISP (cidade pequena) dizem que não realizam nenhuma filtragem de conteúdo... De qualquer forma, eu me pergunto se algum nó ao longo do caminho tem meu intervalo de endereços IP em uma lista negra ou algo assim.

Responder1

Tive um problema semelhante, que parece ter sido causado por um tempo limite da conexão remota do xdebug. Se sua página estiver usando php com xdebug, talvez isso esteja causando o problema.

Responder2

Para mim, a página carrega imediatamente.
(Eu sei, isso não importa muito, mas esta é minha experiência com isso.)

De onde você está se conectando? É bem provável que você esteja enfrentando algum tipo de prevenção DDOS.

Talvez o seu endereço IP esteja na lista negra ou pelo menos examinado com mais cuidado do que todo o resto.

informação relacionada