Como identificar por que um recurso específico (imagem ou biblioteca) retarda o carregamento da página

Como identificar por que um recurso específico (imagem ou biblioteca) retarda o carregamento da página

Temos uma pequena rede (talvez 15 usuários no horário comercial, cerca de 30 dispositivos) gerenciando conexões de internet e linhas telefônicas.

O uso principal da rede é para os usuários acessarem a interface de banco de dados hospedada externamente baseada na web com a qual gerenciam o negócio (clientes, vendas, faturas, etc.). esta interface de banco de dados baseada na web é uma aplicação php/mysql, desenvolvida ao longo do último ano e meio. Como programador principal (se não único), tenho acesso a tudo sobre este aplicativo e nossa rede, desde nossa solução de hospedagem até o código-fonte e a escolha de tecnologias.

alguns meses atrás, notamos uma lentidão muito grande em algo como 5% dos cliques feitos usando a interface do banco de dados. O que quero dizer é que a maioria dos cliques entregará o conteúdo em um a dois segundos e, às vezes, um dos cliques levará até um minuto para carregar.

O que me deslumbra é

  • não parece estar relacionado ao conteúdo da página. Carregar a mesma página repetidamente funcionará 95% do tempo, e um clique às vezes leva de 1.000% a 2.000% mais tempo para carregar. carregar páginas diferentes repetidamente terá os mesmos resultados.
  • a interface baseada na web enfrentasem lentidão quando acessado de fora do escritório. isto é, ele fica mais lento apenas quando usado atrás de nossa rede local.
  • outras páginas da web parecem não estar desaceleradas, mas parar a página atrasada e recarregá-la funcionará bem,o que me faz pensar que isso acontece por alguns segundos, bloqueando todos os cliques feitos durante esse limite, mas não aqueles feitos dois segundos depois
  • o site usa jquery e jquery-ui, além de algumas outras bibliotecas (jquery cookie master, xdate). A lentidão acontece se eles forem carregados de nossos servidores ou diretamente de jquery e ajax.googleapis

diante de tudo isso consultei profissionais de redes e finalmente trocamos nossos equipamentos de rede, agora usamos um firewall cisco asa-5505 e um switch catalisador cisco gerenciado.

  • antes, notamos que os pings para google.com às vezes atingiam o tempo limite ou demoravam até 13.000 ms para carregar, enquanto normalmente temos um ping de 20 a 30 ms
  • também notamos, consultando nosso ISP, que tínhamos até800 GBde uploads por mês! gerenciamos fotos e arquivos pesados, mas 800 GB se estiver longe do uso normal. Por um tempo, pensamos que o alto tráfego de upload na rede poderia impedir que a página carregasse recursos. Pudemos ver pelo histórico do nosso ISP que a lentidão e os uploads massivos parecem acontecer aproximadamente ao mesmo tempo. Não posso dizer sem dúvida o que aconteceu primeiro, parecem acontecer os dois na mesma semana.
  • obviamente tivemos vários erros de perda de pacotes
  • Não sei dizer ao certo quais protocolos a lentidão afeta ou não. Não experimentei falha direta no download e não recebi nenhuma reclamação dos usuários de que o download falhou, mas o upload de arquivos para FTP através do NetBeans será afetado. No entanto, os usuários costumam transmittransferir arquivos para nossos clientes e vice-versa, e não tive reclamações sobre arquivos não carregados corretamente ou clientes que receberam arquivos corrompidos.

infelizmente, só porque não tive reclamações não significa que isso não tenha acontecido, já que a comunicação com os usuários fica um tanto tensa nesses tempos. Eu diria que a rede lenta é a causa [trocadilho intencional].

quando os especialistas que contratamos vieram instalar as novas peças na rede, eles fizeram algumas configurações e monitoramento e agora nosso ping voltou ao normal, e os erros de perda de pacotes acontecem com muito menos frequência, a ponto de pensarmos que são apenas pacote normal perdido pela internet. Também pelo que podemos ver (faz apenas alguns dias) os uploads gigantescos pararam.

mas 5% dos cliques ainda demoram muito para carregar.

Tentei depurar com a aba net do firebug para ver qual parte do site carregou lentamente. O próprio servidor responde entre 200-800 ms, dependendo da complexidade da página, o que parece bom. A maioria das imagens carrega bem, as bibliotecas também, mas quando acontece a lentidão, uma ou mais dessas imagens ou bibliotecas vão esperar uma eternidade antes de carregar.nem sempre é a mesma biblioteca ou imagem

Meu pensamento é que de alguma forma, ao carregar imagens e bibliotecas para exibir a página, a carga da rede impedirá que os recursos cheguem ao seu destino corretamente.

como posso definir o que está impedindo o carregamento de um recurso específico, seja uma imagem ou uma biblioteca js?

Não tenho as habilidades técnicas para usar o wireshark ou outras ferramentas de rede avançadas (do meu humilde ponto de vista), mas aprenderei se for necessário. Dito isto, o monitoramento neste momento parece irrelevante, não quero ver isso lento, sei que é lento. Eu quero sabero que impede que os recursos cheguem aos computadores de destino em nossa rede local.

Responder1

Portanto, sem realmente entrar em sua (s) rede (s) e diagnosticar detalhadamente com você, uma resposta aqui provavelmente será mais um "apontar uma direção" e ver se funciona.

Dito isto, adoto uma espécie de abordagem da navalha de Occam ao lidar com esse tipo de coisa.

Você afirmou:

"a interface baseada na Web não sofre lentidão quando acessada de fora do escritório. Ou seja, ela fica lenta apenas quando usada por trás de nossa rede local."

Esta aqui, se for realmente precisa, é a peça a ser digitada.

A questão DEVE estar em algum lugar dentro dessa "rede local". NÃO está no servidor/aplicativo hospedado externamente; caso contrário, os mesmos problemas poderão ser replicados de outro local.

Então onde? Você já trocou alguns equipamentos de rede sem sucesso, ao que parece.

Aqui está o que eu sugiro que você faça, o que pode parecer simples, mas trabalhe do ponto externo mais distante da sua rede para trás:

  1. Pegue um laptop que NUNCA esteve na LAN local, não faz parte de um domínio, etc. e conecte-o diretamente ao ISP da rede local. Diretamente é a chave. Coloque um laptop diretamente na rede do ISP sem firewall ou similar no mix e veja que tipo de respostas/desempenho você obtém e compare-o com sua configuração externa conhecida que funciona bem.
  2. Se você não encontrar problemas na etapa 1, mova o laptop uma camada para trás, diretamente conectado ao firewall ASA, e depois teste novamente através do firewall.
  3. Se não houver problemas no número 2, volte para outra camada, desta vez atrás do switch gerenciado.
  4. Se não houver problemas no número 3, você sabe que não é um problema de rede.

E assim por diante (tentando um cliente que tem "problemas" externamente, etc.) até que você possa pelo menos dizer objetivamente o que/onde o problema ocorre, mesmo que você não saiba por que ou especificamente o que está causando isso em um "camada" específica. Então você inicia um mergulho mais profundo nessa "camada" específica, se desejar.

Responder2

Você provavelmente precisará usar o nmap (ou wireshark, por exemplo) para inspecionar a rede local, ele pode ajudá-lo a encontrar um computador Windows com vírus e enviando milhares de solicitações arp de spam, ou um usuário usando um cliente bittorrent ou qualquer outra coisa que possa saturar seu rede local ou seu upload na internet

A outra opção é que a maioria dos ISPs está longe de ser perfeita. . . talvez às vezes o ISP tenha alguma perda de pacotes ou problemas de estabilidade de upload. Instalar uma ferramenta de monitoramento como fumar e monitorar um alvo na Internet pode ajudá-lo a ver isso (perda de pacotes, upload lento, ping lento) e também permitir que você veja quando isso acontece (sempre que John Doe está no escritório e conecta seu computador à rede ?

informação relacionada