Co oznaczają czasy na osi czasu przeglądarki Google Chrome w panelu sieci?

83

Często podczas rozwiązywania problemów z wydajnością za pomocą panelu sieciowego przeglądarki Google Chrome widzę różne czasy i często zastanawiam się, co one oznaczają.

Czy ktoś może potwierdzić, że dobrze je rozumiem:

  1. Blokowanie: czas zablokowany przez wielokrotne żądania przeglądarki dla tego samego limitu domeny (???)
  2. Oczekiwanie: Oczekiwanie na połączenie z serwera (???)
  3. Wysyłanie: czas poświęcony na przesłanie pliku z serwera do przeglądarki (???)
  4. Odbieranie: czas spędzony przez przeglądarkę na analizowaniu i dekodowaniu pliku (???)
  5. Wyszukiwanie DNS: czas spędzony na rozwiązywaniu nazwy hosta.
  6. Łączenie: czas poświęcony na nawiązywanie połączenia z gniazdem.

Jak ktoś mógłby naprawić długie czasy blokowania?

Jak ktoś mógłby skorygować długi czas oczekiwania?

Patrick Forget
źródło
Częściowy duplikat: stackoverflow.com/questions/8795408/…
Alexander Pavlov

Odpowiedzi:

92

Wysyłanie to czas spędzony na przesyłaniu danych / żądania na serwer. Występuje między blokowaniem a czekaniem. Na przykład, jeśli wyślę z powrotem stronę ASPX, będzie to wskazywało, ile czasu zajęło przesłanie żądania (w tym wartości formularzy i stanu sesji) z powrotem na serwer ASP.

Oczekiwanie to czas po wysłaniu żądania, ale przed otrzymaniem odpowiedzi z serwera. Zasadniczo jest to czas spędzony na oczekiwaniu na odpowiedź z serwera.

Odbieranie to czas spędzony na pobieraniu odpowiedzi z serwera.

Bloking to czas między uruchomieniem żądania przez wątek interfejsu użytkownika a wejściem żądania HTTP GET do sieci.

Kolejność, w jakiej występują, to:

  1. Bloking*
  2. Wyszukiwanie DNS
  3. Złączony
  4. Wysyłanie
  5. Czekanie
  6. Otrzymywanie

* Blokowanie i wyszukiwanie DNS mogą zostać zamienione.

Karta sieci nie wskazuje czasu spędzonego na przetwarzaniu.

Jeśli masz długi czas blokowania, oznacza to, że komputer z przeglądarką działa wolno. Możesz to naprawić, aktualizując maszynę (więcej pamięci RAM, szybszy procesor itp.) Lub zmniejszając jej obciążenie (wyłącz usługi, których nie potrzebujesz, zamykając programy itp.).

Długi czas oczekiwania wskazuje, że serwer długo reaguje na żądania. To albo oznacza:

  • Przetwarzanie żądania zajmuje dużo czasu (np. W przypadku pobierania dużej ilości danych z bazy danych, sortowania dużych ilości danych lub znajdowania pliku na dysku twardym, który musi się rozkręcić).
  • Twój serwer otrzymuje zbyt wiele żądań, aby obsłużyć wszystkie żądania w rozsądnym czasie (przetworzenie żądania może zająć 0,02 sekundy, ale gdy masz 1000 żądań, będzie zauważalne opóźnienie).

Te dwa problemy (długie oczekiwanie + długie blokowanie) są powiązane. Jeśli możesz zmniejszyć obciążenie serwera przez buforowanie, dodanie nowego serwera i zmniejszenie pracy wymaganej dla aktywnych stron, powinieneś zobaczyć ulepszenia w obu obszarach.

Trisped
źródło
Czy w ostatnim akapicie nie miałeś na myśli długiego czekania + długiego odbierania?
Valentin
@Valentin Odbieranie będzie bardziej Twoim połączeniem internetowym i serwerem. Długie blokowanie oznaczałoby problem z komputerem.
Trisped
24

Możesz przeczytać szczegółowe oficjalne wyjaśnienie od zespołu Google tutaj. Jest to naprawdę pomocny zasób, a Twoje informacje znajdują się w sekcji Widok osi czasu .

Synchronizacja sieci zasobów pokazuje te same informacje, co na pasku zasobów w widoku osi czasu. Odpowiadając na twoje pytanie:

  • Wyszukiwanie DNS : czas spędzony na wyszukiwaniu DNS. (musisz znaleźć adres IP witryny.com, a to zajmuje trochę czasu)
  • Blokowanie : czas, przez który żądanie czekało, aż już nawiązane połączenie stanie się dostępne do ponownego użycia. Jak powiedziano w innej odpowiedzi, nie zależy to od twojego serwera - to jest problem klienta.
  • Łączenie : czas potrzebny do ustanowienia połączenia, w tym uzgadnianie / ponawianie prób TCP, wyszukiwanie DNS i czas łączenia się z serwerem proxy lub negocjowania warstwy bezpiecznego gniazda (SSL). Zależy od przeciążenia sieci.
  • Wysyłanie - czas poświęcony na wysłanie żądania. Zależy od rozmiaru wysyłanych danych (które są przeważnie małe, ponieważ Twoje żądanie ma prawie zawsze kilka bajtów, z wyjątkiem sytuacji, gdy przesyłasz duży obraz lub ogromną ilość tekstu), przeciążenie sieci, bliskość klienta do serwera
  • Oczekiwanie - czas spędzony na oczekiwaniu na pierwszą odpowiedź. Jest to przeważnie czas, w którym serwer przetwarza i odpowiada na twoją odpowiedź. To jest szybkość, z jaką Twój serwer oblicza rzeczy, pobiera rekordy z bazy danych i tak dalej.
  • Odbieranie - czas poświęcony na otrzymywanie danych odpowiedzi. Coś podobnego do wysyłania, ale teraz otrzymujesz dane z serwera (rozmiar odpowiedzi jest w większości większy niż żądanie). Zależy to również od rozmiaru, jakości połączenia i tak dalej.
Salvador Dali
źródło
FYI: Znalazłem całkiem niezły analizator pliku har
Mike Pennington,
1

Blokowanie : czas, przez który żądanie czekało, aż już nawiązane połączenie stanie się dostępne do ponownego użycia. Jak powiedziano w innej odpowiedzi, nie zależy to od twojego serwera - to jest problem klienta .

Nie zgadzam się z powyższym stwierdzeniem. Wszystko inne jest takie samo [obciążenie mojego komputera] - moja przeglądarka pokazuje bardzo krótszy czas „blokowania” dla jednej witryny i długi czas blokowania dla innej witryny.

Więc jeśli oczekiwanie na jeden z sześciu wątków + negocjacja proxy ** jest wysokie, dzieje się tak głównie z powodu kaskadowego efektu spowolnienia serwera LUB złego projektu strony [zbyt wiele przesyłanych przez sieć, zbyt wiele razy].

** - cokolwiek oznacza „Negocjacja proxy” !, nikt nie wyjaśnia tego dobrze, szczególnie gdy w rzeczywistości nie jest zaangażowany lokalny serwer proxy / CDN

Bieg
źródło