특정 리소스(이미지 또는 라이브러리)로 인해 페이지 로드 속도가 느려지는 이유를 정확히 찾아내는 방법

특정 리소스(이미지 또는 라이브러리)로 인해 페이지 로드 속도가 느려지는 이유를 정확히 찾아내는 방법

우리는 인터넷 연결과 전화선을 관리하는 소규모 네트워크(주요 업무 시간에는 사용자 15명, 장치 약 30개)를 보유하고 있습니다.

네트워크의 주요 용도는 사용자가 비즈니스(클라이언트, 판매, 송장 등)를 관리하는 웹 기반 외부 호스팅 데이터베이스 인터페이스에 액세스하는 것입니다. 이 웹 기반 데이터베이스 인터페이스는 지난 1년 반 동안 개발된 php/mysql 애플리케이션입니다. 저는 기본 프로그래머로서 호스팅 솔루션부터 소스 코드, 기술 선택에 이르기까지 이 애플리케이션과 네트워크에 대한 모든 것에 액세스할 수 있습니다.

몇 달 전, 우리는 데이터베이스 인터페이스를 사용하여 생성된 클릭의 5% 정도에서 속도가 매우 심하게 느려지는 것을 발견했습니다. 내 말은, 대부분의 클릭은 1~2초 안에 콘텐츠를 전달하고 때로는 클릭 중 하나가 로드되는 데 최대 1분이 걸린다는 것입니다.

나를 눈부시게 하는 것은

  • 페이지의 내용과 일치하지 않는 것 같습니다. 동일한 페이지를 반복해서 로드하면 95%의 시간 동안 작동하며, 한 번의 클릭으로 로드하는 데 1000%에서 2000% 더 많은 시간이 걸리는 경우도 있습니다. 다른 페이지를 계속해서 로드하면 동일한 결과가 나타납니다.
  • 웹 기반 인터페이스는사무실 외부에서 액세스할 때 속도가 느려지지 않음. 즉, 로컬 네트워크 뒤에서 사용될 때만 속도가 느려집니다.
  • 다른 웹페이지는 속도가 느려지지 않는 것 같은데, 지연된 페이지를 중지하고 다시 로드하면 문제가 없습니다.몇 초 동안 발생한 것으로 생각됩니다. 이 임계값 동안 발생한 모든 클릭을 차단하지만 2초 후에 발생한 클릭은 차단하지 않습니다.
  • 웹사이트는 jquery와 jquery-ui는 물론 다른 라이브러리(jquery cookie master, xdate)도 사용합니다. 서버에서 로드하거나 jquery 및 ajax.googleapis에서 직접 로드하면 속도가 느려집니다.

이 모든 문제에 직면하여 저는 네트워크 전문가에게 문의했고 마침내 네트워크 장비를 변경했으며 현재는 Cisco asa-5505 방화벽과 관리형 Cisco Catalyst 스위치를 사용하고 있습니다.

  • 이전에는 google.com에 대한 핑이 때때로 시간 초과되거나 로드하는 데 최대 13000ms가 걸리는 반면 일반적으로 핑은 20-30ms에 있는 것으로 나타났습니다.
  • 우리는 또한 ISP에 문의하여 우리가 가지고 있는800GB한 달에 업로드 횟수! 사진과 대용량 파일을 관리하지만 일반적인 사용과는 거리가 멀다면 800GB입니다. 한동안 우리는 높은 네트워크 업로드 트래픽으로 인해 페이지가 리소스를 로드하지 못할 수 있다고 생각했습니다. 우리는 isp의 역사를 통해 속도 저하와 대규모 업로드가 대략 동시에 발생하는 것으로 보인다는 것을 알 수 있었습니다. 어느 것이 먼저 일어났는지 전혀 의심할 여지가 없습니다. 두 사건이 같은 주에 발생한 것 같습니다.
  • 분명히 수많은 패킷 손실 오류가 발생했습니다
  • 속도 저하가 어떤 프로토콜에 영향을 미치는지 확실하게 알 수 없습니다. 다운로드 실패를 직접 경험한 적도 없고 다운로드 실패에 대한 사용자 불만도 없었지만 netbeans를 통해 ftp에 파일을 업로드하는 것이 영향을 받을 것입니다. 그러나 사용자는 transmit파일을 클라이언트에게 전송하거나 다시 전송하는 데 사용되며 파일이 올바르게 업로드되지 않거나 클라이언트가 손상된 파일을 받는 것에 대해 불만을 제기한 적이 없습니다.

안타깝게도 불만이 없었다고 해서 그런 일이 일어나지 않은 것은 아닙니다. 그 당시에는 사용자와의 소통이 다소 긴장되었기 때문입니다. 느린 네트워크가 원인이라고 말하고 싶습니다.

우리가 고용한 전문가가 네트워크에 새로운 부분을 설치하러 왔을 때 그들은 몇 가지 구성과 모니터링을 수행했으며 이제 핑이 정상으로 돌아왔고 패킷 손실 오류가 훨씬 덜 자주 발생합니다. 인터넷을 통해 일반 패킷이 손실되었습니다. 또한 우리가 볼 수 있는 바에 따르면(며칠밖에 되지 않았음) 대규모 업로드가 중단되었습니다.

하지만 클릭 중 5%는 여전히 로드하는 데 많은 시간이 걸립니다.

웹사이트의 어떤 부분이 느리게 로드되는지 확인하기 위해 Firebug의 net 탭을 사용하여 디버깅을 시도했습니다. 서버 자체는 페이지의 복잡성에 따라 200-800ms 사이에서 응답하는데 이는 괜찮은 것 같습니다. 대부분의 이미지는 정상적으로 로드되고 라이브러리도 로드되지만 속도가 느려지면 해당 이미지나 라이브러리 중 하나 이상이 로드되기 전에 영원히 기다리게 됩니다.항상 동일한 라이브러리나 이미지는 아닙니다.

내 생각에는 페이지를 표시하기 위해 이미지와 라이브러리를 로드할 때 네트워크 로드로 인해 리소스가 대상에 올바르게 도달하지 못할 것이라고 생각합니다.

이미지나 js 라이브러리 등 특정 리소스의 로드를 방해하는 요소를 어떻게 찾아낼 수 있나요?

저는 Wireshark나 기타 고급(저의 겸손한 관점에서 볼 때) 네트워킹 도구를 사용할 기술이 부족하지만 필요한 경우 배울 것입니다. 즉, 이 시점에서 모니터링하는 것은 관련이 없는 것 같습니다. 느린 것을 보고 싶지 않으며 느리다는 것을 알고 있습니다. 나는 알고 싶다리소스가 로컬 네트워크의 대상 컴퓨터에 도달하지 못하게 하는 요소.

답변1

따라서 실제로 네트워크에 접속하여 자세히 진단하지 않고도 여기서 답변은 "방향을 제시"하고 작동하는지 확인하는 것에 더 가깝습니다.

즉, 나는 이런 종류의 일을 다룰 때 일종의 Occam의 면도날 접근 방식을 취합니다.

당신은 다음과 같이 말했습니다.

"웹 기반 인터페이스는 사무실 외부에서 액세스할 때 속도가 느려지지 않습니다. 즉, 로컬 네트워크 뒤에서 사용할 때만 속도가 느려집니다."

이것이 정말로 정확하다면 여기에 입력해야 할 부분입니다.

문제는 해당 "로컬 네트워크" 내의 어딘가에 있어야 합니다. 외부에서 호스팅되는 서버/응용 프로그램에는 없습니다. 그렇지 않으면 동일한 문제가 다른 위치에서 복제될 수 있습니다.

그래서 어디? 이미 몇 가지 네트워크 장비를 교체했지만 아무 소용이 없을 것 같습니다.

다음은 간단하게 들릴 수 있지만 네트워크의 가장 먼 외부 지점에서 거꾸로 작업할 것을 제안하는 방법입니다.

  1. 로컬 LAN에 접속한 적이 없고 도메인에 속하지 않는 노트북 등을 로컬 네트워크의 ISP에 직접 연결하세요. 바로 핵심입니다. 방화벽이나 이와 유사한 혼합 없이 ISP 네트워크에 랩탑을 직접 연결하고 어떤 종류의 응답/성능을 얻는지 확인하고 잘 작동하는 알려진 양호한 외부 설정과 비교하십시오.
  2. 1단계에서 문제가 발견되지 않으면 ASA 방화벽에 직접 연결된 노트북을 한 계층 뒤로 이동한 다음 방화벽을 통해 다시 테스트하세요.
  3. #2에서 문제가 없으면 다른 계층으로 돌아가십시오. 이번에는 관리되는 스위치 뒤입니다.
  4. #3에서 문제가 없다면 네트워크 문제가 아니라는 것을 알 수 있습니다.

그 이유나 구체적으로 원인이 무엇인지 모르더라도 적어도 문제가 어디서/무엇이 발생하는지 객관적으로 말할 수 있을 때까지 계속해서(외부적으로 "문제"가 있는 클라이언트를 시도하는 등) 특정 "레이어". 그런 다음 원할 경우 해당 특정 "계층"에 대해 더 자세히 알아보기 시작합니다.

답변2

로컬 네트워크를 검사하려면 nmap(또는 wireshark)을 사용해야 할 것입니다. 이는 바이러스가 있고 수천 건의 스팸 arp 요청을 보내는 Windows 컴퓨터나 비트토렌트 클라이언트 등을 사용하는 사용자를 찾는 데 도움이 될 수 있습니다. 로컬 네트워크 또는 인터넷 업로드

다른 옵션은 대부분의 ISP가 완벽하지 않다는 것입니다. . . 때로는 ISP에 패킷 손실이나 업로드 안정성 문제가 있을 수도 있습니다. 흡연과 같은 모니터링 도구를 설치하고 인터넷에서 대상을 모니터링하면 이러한 상황(패킷 손실, 느린 업로드, 느린 핑)을 확인하는 데 도움이 될 수 있으며, 그런 일이 발생하는 시기(John Doe가 사무실에 있을 때마다 컴퓨터에 플러그를 꽂을 때마다)도 확인할 수 있습니다. 컴퓨터를 네트워크에 연결 하시겠습니까?

관련 정보