Como identificar por que um recurso específico (imagem ou biblioteca) reduz a carga da página

1

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

O principal uso da rede é o acesso dos usuários à interface de banco de dados hospedada externamente com base na Web, com a qual eles gerenciam os negócios (clientes, vendas, faturas, etc.). esta interface de banco de dados baseada na web é um aplicativo php / mysql, desenvolvido ao longo do último ano e meio. Como programador principal (se não apenas), tenho acesso a tudo sobre esse aplicativo e nossa rede, desde a solução de hospedagem até o código-fonte até a escolha das tecnologias.

alguns meses atrás, notamos uma péssima desaceleração em algo como 5% das clics feitas 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 ser carregado.

O que me deixa deslumbrado é

  • não parece estar relacionado com o conteúdo da página. Carregar a mesma página repetidamente funcionará 95% do tempo, com um clique, às vezes levando de 1.000% a 2000% mais tempo para carregar. carregar páginas diferentes repetidas vezes terá os mesmos resultados.
  • a interface baseada na web enfrenta sem abrandar quando acessada de fora do escritório . isto é, só diminui quando usado atrás da nossa rede local.
  • outras páginas da web parecem não ficarem lentas, mas parar a página com atraso e recarregá-la funcionará ok, o que me faz pensar que 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, bem como algumas outras bibliotecas (jquery cookie master, xdate). A lentidão acontece se eles são carregados de nossos servidores ou diretamente de jquery e ajax.googleapis

enfrentando tudo isso, consultei profissionais de redes e, finalmente, nós trocamos nossos equipamentos de rede, agora usamos um firewall cisco asa-5505 e um switch de catalizador cisco gerenciado.

  • antes, percebemos que pings para google.com às vezes chegavam ao tempo limite ou demoravam até 13000 ms para serem carregados, enquanto normalmente temos um ping em 20-30ms
  • também notamos ao consultar nosso provedor que tínhamos até 800 gb de uploads por mês! nós gerenciamos fotos e arquivos pesados, mas 800gb se longe de um uso normal. Por algum tempo, achamos que o tráfego alto de upload da rede poderia impedir que a página carregasse recursos. Poderíamos ver com a história do nosso isp que a lentidão e os uploads massivos parecem acontecer mais ou menos ao mesmo tempo. Eu não posso dizer sem nenhuma dúvida o que aconteceu primeiro, eles parecem acontecer na mesma semana.
  • obviamente tivemos vários erros de perda de pacotes
  • Eu não posso dizer com certeza quais protocolos a lentidão afeta ou não. Não experimentei diretamente um download failling, e não tive nenhuma reclamação de usuários que o seu download falhou, mas o upload de arquivos para ftp através do netbeans será afetado. No entanto, os usuários usam transmit para transferir arquivos para nossos clientes e voltar, e eu não tenho reclamações sobre arquivos que não foram enviados corretamente ou clientes que receberam arquivos corrompidos.

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

quando os especialistas que contratamos vieram instalar as novas peças na rede, eles fizeram algumas configurações e monitoramentos e agora, nosso ping volta ao normal, e os erros de perda de pacotes acontecem muito menos frequentemente, a ponto de pensarmos esses são apenas pacotes normais perdidos pela internet. Também do que podemos ver (faz apenas alguns dias), os uploads gigantescos pararam.

mas, 5% dos cliques ainda levam muito tempo para carregar.

Eu tentei depurar com a aba net do firebug para ver qual parte do site carregou devagar. O próprio servidor responde entre 200 e 800 ms, dependendo da complexidade da página, o que parece ok. A maioria das imagens carrega ok, as bibliotecas também, mas quando a lentidão acontece, uma ou mais dessas imagens ou bibliotecas aguardarão para sempre antes de serem carregadas. 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 destino corretamente.

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

Eu 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 vou aprender se preciso. Dito isto, monitorar neste momento parece irrelevante, eu não quero ver isso sendo lento, eu sei que é lento. Quero saber o que impede que os recursos cheguem a seus computadores de destino em nossa rede local .

    
por Félix Gagnon-Grenier 24.11.2014 / 19:33

2 respostas

1

Assim, sem realmente entrar na (s) sua (s) rede (s) e diagnosticar em detalhes com você, uma resposta aqui provavelmente será mais um "aponte você em uma direção" e veja se funciona.

Dito isso, tomo uma espécie de abordagem de navalha de Occam ao lidar com esse tipo de coisa.

Você declarou:

"the web based interface faces no slowing down when accessed from outside the office. that is, it slows down only when used behind our local network."

Isso aqui, se verdadeiramente preciso, é a peça para digitar.

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

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

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

  1. Pegue um laptop que NUNCA esteve na LAN local, não faça 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 um firewall ou similar na mixagem e veja que tipo de respostas / desempenho você obtém e compare-o com sua configuração externa boa que funciona bem.
  2. Se você não encontrar problemas na etapa 1, prossiga para mover o laptop uma camada de volta, diretamente conectado ao firewall ASA e, em seguida, teste novamente por meio do firewall.
  3. Se não houver problemas no nº 2, volte para outra camada, desta vez por trás do switch gerenciado.
  4. Se não houver problemas no nº 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ê, pelo menos, possa objetivamente dizer o que / onde o problema ocorre, mesmo que você não saiba por que ou especificamente o que está causando em uma "camada" particular. Então você começa um mergulho mais profundo nessa "camada" específica, se quiser.

    
por 24.11.2014 / 20:18
1

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 enviar milhares de solicitações de spam, ou um usuário usando um cliente bittorrent ou qualquer pode saturar sua rede local ou seu upload de internet

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

    
por 24.11.2014 / 19:46