Chrome 네트워크 로그 '중지'상태 이해


172

크롬에 다음 네트워크 로그가 있습니다.

네트워크 로그

채워진 회색 막대와 투명 회색 막대의 차이점은 무엇입니까?


2
나는 지난 2 주 동안 이것을 많이보고있다. 크롬에서 Shift-Refresh를 수행하면 125 개의 항목이로드됩니다. 가끔씩, 해당 파일 중 3-4 개가 "중지됨"상태로 고정됩니다. 모든 파일은 .png 파일입니다. 유일한 해결책은 탭을 닫고 다른 테이블을 다시 연 다음 개발 도구를 다시 여는 것입니다. 나는이 문제 없이이 코드베이스에서 1 년 이상 일해 왔으며 png 파일에서 이러한 동작을 일으킬 것으로 생각되는 변경 사항은 없습니다.
— Greg

답변:


202

Google은 DevTools 설명서의 네트워크 성능 평가 섹션 에서 이러한 필드를 세분화 합니다.

자원 네트워크 타이밍 에서 발췌 :

실속 / 차단

요청이 전송되기 전에 대기 한 시간입니다. 이번에는 대리 협상에 소요 된 시간을 포함합니다. 또한이 시간에는 브라우저가 이미 설정된 연결을 재사용 할 수있을 때까지 기다릴 때까지 포함되며 Chrome 은 원래 규칙 당 최대 6 개의 TCP 연결을 준수 합니다.

잊어 버린 경우 Chrome의 풍선 도움말 및 '타이밍'패널 아래에 '설명'링크가 있습니다.

기본적으로 이것이 표시되는 주된 이유는 Chrome에서 한 번에 서버 당 6 개의 파일 만 다운로드하고 연결 슬롯을 사용할 수있을 때까지 다른 요청이 중단되기 때문입니다.

이것은 반드시 수정이 필요한 것은 아니지만 정지 상태를 피하는 한 가지 방법은 여러 도메인 이름 및 / 또는 서버에 파일을 배포 하여 필요에 따라 CORS 를 염두에 두는 것이지만 HTTP2가 더 나은 옵션 일 것입니다 앞으로. JS 및 CSS 연결과 같은 리소스 번들링은 연결이 중단되는 양을 줄이는 데 도움이 될 수 있습니다.


1
로컬 파일에도 6 파일 제한이 있습니까? 페이지를로드 할 때 때때로 정지 상태가 발생합니다.file:///C:/...
— Ilya Kogan

@IlyaKogan 파일 시스템에서로드 할 때 6 파일 제한이없는 것으로 보이지만 "중지"단계가있는 것 같습니다. 내 생각에 이것은 Chrome이 파일 시스템에서 파일을 여는 데 걸리는 시간을 나타내고 "콘텐츠 다운로드"단계는 내용을 메모리에로드하는 데 걸린 시간을 나타냅니다.
— Alexander O'Mara

4
참고 : 크롬 42에서 대기열에서 대기하는 시간은 표시된 문서에 따라 중단 / 차단 섹션으로 계산되지 않지만 총계에 포함됩니다. 대기열에 시간을 확보하려면 총계에서 모든 섹션을 빼십시오. 다행스럽게도 문서를 업데이트하거나 버그를 수정하기를 바랍니다.
— 약

20
그러나 흰색 막대와 회색 막대의 차이점은 무엇입니까?
— Kat

동시성을 높이기위한 도메인 샤딩은 권장되지 않습니다. 대신 HTTP2를 사용하십시오. 참조 : youtube.com/watch?v=yURLTwZ3ehk
— 호머 6

13

DevTools : [네트워크] 빈 막대 선행 요청 설명

더 조사한 결과 스톨 범위와 큐 범위 사이에 큰 차이가 없음을 확인했습니다. 둘 다 넷 스택 또는 렌더러에서 제공되는 것이 아니라 다른 타임 스탬프의 델타에서 계산됩니다.


현재 소켓을 사용할 수있게되기를 기다리는 경우 :

  • 프록시 협상이 발생하면 멈추게됩니다
  • 프록시 / ssl 작업이 필요하지 않은 경우이를 큐잉이라고합니다.

6

https://developers.google.com/web/tools/chrome-devtools/network-performance/understanding-resource-timing

이것은 Chome-devtools의 공식 사이트에서 제공되며 도움이됩니다. 여기 내가 인용 :

  • 큐 요청이 큐에 있으면 다음을 나타냅니다.
    • 요청이 중요한 리소스 (예 : 스크립트 / 스타일)보다 우선 순위가 낮기 때문에 렌더링 엔진에서 요청을 연기했습니다. 이것은 종종 이미지에서 발생합니다.
    • 사용 가능한 TCP 소켓이 해제되기를 기다리는 요청이 보류되었습니다.
    • 브라우저가 HTTP 1에서 원 본당 6 개의 TCP 연결 만 허용하기 때문에 요청이 보류되었습니다. 디스크 캐시 항목을 작성하는 데 소요 된 시간 (일반적으로 매우 빠름)
  • 중단 / 차단 요청을 보내기 전에 대기하는 데 걸린 시간입니다. 큐잉에 대해 설명 된 이유 중 하나를 기다릴 수 있습니다. 또한이 시간에는 프록시 협상에 소요 된 시간이 포함됩니다.

1

제 경우는 페이지가 열릴 때 페이지가 다른 매개 변수로 여러 요청을 보내는 것입니다. 그래서 대부분은 "중지"되고 있습니다. 다음 요청이 즉시 전송되면 "중지"됩니다. 불필요한 요청을 피하는 것이 더 좋을 것입니다 (게으른 ...).


1

많은 사람들이 느린 웹 사이트를 디버깅하기 위해 여기에 도착했기 때문에 Google 설명 중 어느 것도 해결하는 데 도움이되지 않은 제 사건에 대해 알려 드리고자합니다. 연결을 처리하기에 작업자 스레드가 너무 적은 Windows에서 Apache를 실행하여 대기 시간이 길어지면서 엄청난 지연 시간 (때로는 1 분)이 발생했습니다.

아파치 로그에 다음과 같은 메모가있는 경우이 내용이 적용될 수 있습니다.

Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

이 문제는 Apache httpd.conf에서 해결되었습니다. 주석 해제 : conf / extra / httpd-mpm.conf 포함

그리고 httpd-mpm.conf를 편집하십시오

<IfModule mpm_winnt_module>
   ThreadLimit              2000
   ThreadsPerChild          2000
   MaxConnectionsPerChild   0
</IfModule>

2000 개의 스레드가 필요하지 않거나 더 필요할 수 있습니다. 2000은 괜찮습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.