Opis stanu „Stalled” w dzienniku sieci Chrome


172

Mam następujący log sieciowy w chrome:

dziennik sieci

Nie rozumiem jednej rzeczy: jaka jest różnica między wypełnionymi szarymi słupkami a przezroczystymi szarymi słupkami.


2
Często to widzę w ciągu ostatnich dwóch tygodni. Mam 125 pozycji ładujących się, kiedy odświeżam zmiany w chrome. Od czasu do czasu 3-4 z tych plików utkną w stanie „Stalled”. Wszystkie pliki są plikami .png. Jedynym rozwiązaniem jest zamknięcie karty, ponowne otwarcie innej tabeli i ponowne otwarcie narzędzi programistycznych. Pracowałem na tej bazie kodu od ponad roku bez tego problemu i nie było żadnych zmian, które moim zdaniem spowodowałyby takie zachowanie na plikach png.
Greg Grater

Odpowiedzi:


202

Google podaje podział tych pól w sekcji Ocena wydajności sieci w dokumentacji DevTools.

Fragment z taktowania sieci zasobów :

Utknięcie / Blokowanie

Czas oczekiwania, zanim żądanie zostało wysłane. Ten czas obejmuje czas spędzony na negocjacjach proxy. Ponadto ten czas będzie obejmował sytuacje, w których przeglądarka czeka, aż już ustanowione połączenie stanie się dostępne do ponownego użycia, przestrzegając maksymalnej liczby sześciu połączeń TCP na źródło w przeglądarce Chrome .

(Jeśli zapomnisz, Chrome ma link „Wyjaśnienie” w podpowiedzi i pod panelem „Czas”).

Zasadniczo głównym powodem, dla którego to zobaczysz, jest to, że Chrome będzie pobierać tylko 6 plików na serwer na raz, a inne żądania będą wstrzymywane, dopóki gniazdo połączenia nie będzie dostępne.

Niekoniecznie jest to coś, co wymaga naprawy, ale jednym ze sposobów uniknięcia stanu wstrzymania jest dystrybucja plików na wiele nazw domen i / lub serwerów, pamiętając o CORS , jeśli ma to zastosowanie do twoich potrzeb, jednak HTTP2 jest prawdopodobnie lepszą opcją iść naprzód. Pakowanie zasobów (takie jak konkatenacja JS i CSS) może również pomóc w zmniejszeniu liczby blokowanych połączeń.


1
Czy obowiązuje limit 6 plików dla plików lokalnych? Od czasu do czasu napotykam stan zablokowania podczas ładowania strony zfile:///C:/...
Ilya Kogan

@IlyaKogan Wygląda na to, że podczas ładowania z systemu plików nie ma ograniczenia do 6 plików, ale wydaje się, że występuje faza „zablokowana”. Domyślam się, że oznacza to czas potrzebny Chrome na otwarcie pliku w systemie plików, a faza „Pobieranie zawartości” reprezentuje czas potrzebny na załadowanie zawartości do pamięci.
Alexander O'Mara

4
FYI: W chrome 42 czas oczekiwania w kolejce nie jest liczony jako sekcja Stalled / Blocking, jak wskazano w dokumentach, ale jest wliczany do całości. Aby uzyskać czas w kolejce, odejmij wszystkie sekcje od sumy. Miejmy nadzieję, że zaktualizują swoje dokumenty (lub naprawią błąd).
delrox

20
Ale jaka jest różnica między białym a szarym paskiem?
Kat,

Nie zaleca się fragmentowania domeny w celu osiągnięcia wyższej współbieżności. Zamiast tego użyj protokołu HTTP2. Zobacz: youtube.com/watch?v=yURLTwZ3ehk
Homer6

13

DevTools: [sieć] wyjaśniają puste słupki poprzedzające żądanie

Po dokładniejszym zbadaniu stwierdziliśmy, że nie ma znaczącej różnicy między naszymi zakresami wstrzymanymi i kolejkowymi. Oba są obliczane na podstawie delta innych znaczników czasu, a nie dostarczane z netstack lub renderer.


Obecnie, jeśli czekamy na udostępnienie gniazda:

  • Nazywamy to utknięciem, jeśli doszło do negocjacji proxy
  • Nazywamy to kolejkowaniem, jeśli nie jest wymagana żadna praca proxy / ssl.

6

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

Pochodzi z oficjalnej strony Chome-devtools i pomaga. Tutaj cytuję:

  • Kolejkowanie Jeśli żądanie jest umieszczane w kolejce, oznacza to, że:
    • Żądanie zostało odroczone przez silnik renderujący, ponieważ ma niższy priorytet niż krytyczne zasoby (takie jak skrypty / style). Dzieje się tak często w przypadku obrazów.
    • Żądanie zostało zawieszone, aby czekać na niedostępne gniazdo TCP, które ma zostać zwolnione.
    • Żądanie zostało wstrzymane, ponieważ przeglądarka zezwala tylko na sześć połączeń TCP na źródło HTTP 1. Czas spędzony na tworzeniu wpisów w pamięci podręcznej dysku (zazwyczaj bardzo szybki).
  • Stalled / Blocking Czas oczekiwania na żądanie przed wysłaniem. Może czekać na którykolwiek z powodów opisanych dla kolejkowania. Dodatkowo czas ten obejmuje czas spędzony na negocjacjach proxy.

1

W moim przypadku strona wysyła wiele żądań z różnymi parametrami, gdy była otwarta. Więc większość z nich jest „zatrzymywana”. Kolejne żądania wysłane natychmiast zostają wstrzymane. Lepiej byłoby unikać niepotrzebnych próśb (być leniwym ...).


1

Ponieważ przyjeżdża tu wiele osób debugujących swoją powolną stronę internetową, chciałbym poinformować o mojej sprawie, której żadne z wyjaśnień google nie pomogło rozwiązać. Moje ogromne czasy opóźnień (czasami 1 minuta) były spowodowane tym, że Apache działający w systemie Windows miał zbyt mało wątków roboczych do obsługi połączeń, dlatego były one w kolejce.

Może to dotyczyć Ciebie, jeśli dziennik Apache zawiera następującą notatkę:

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

Ten problem został rozwiązany w httpd.conf serwera Apache. Odkomentuj: dołącz conf / extra / httpd-mpm.conf

I edytuj plik httpd-mpm.conf

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

Zauważ, że możesz nie potrzebować 2000 wątków lub możesz potrzebować więcej. Rok 2000 był w moim przypadku OK.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.