Jak zoptymalizować czas ładowania początkowego połączenia i fazy uzgadniania SSL strony internetowej w sieci 3G?


11

Moja witryna www.example.com (z włączoną obsługą SSL) jest hostowana na hostingu współdzielonym Amazon EC2. Ładuje się szybciej (czas ładowania <2 sekundy) w połączeniu WiFi / szerokopasmowym. Problem dotyczy sieci 3G w telefonie komórkowym ** (tryb H, a nie tryb H +) **. Zainicjuj fazę połączenia, a proces uzgadniania protokołu SSL zajmuje dużo czasu - 12 sekund. Monitorował parametry czasowe na karcie Chrome Network. Poniżej znajduje się zmierzony czas ładowania strony.

Ładowanie strony Statystyki synchronizacji sieci

Rodzaj danych obsługiwanych na stronie: Testowana strona internetowa otrzymuje 5 sparowanych danych JSON za pomocą AJAX i wyświetla je na stronie internetowej. Jest to bardzo lekka strona z tylko 5-6 treściami tekstowymi.

Widziałem, że wiele witryn ładuje się szybciej w sieci komórkowej 3G (tryb H). Moja strona internetowa jest zbyt wolna podczas początkowej fazy ustanawiania połączenia w sieci 3G. Czy ktoś może mi pomóc, jak rozwiązać / zoptymalizować opóźnienie w początkowej fazie połączenia? Czy przejście na hosting dedykowany rozwiąże obecny problem?

Serwer WWW nie jest zajęty i zawsze jest dużo procesora i pamięci.

Konfiguracja serwera: Instancja Amazon EC2 - hosting dzielony (32 procesory i 60 GB pamięci RAM). Serwer WWW - Apache. SSL - Symantec.


Czy próbowałeś użyć elastycznego modułu równoważenia obciążenia i obsługiwać HTTPS? Tego używam w Amazon i nie widziałem takich problemów z wydajnością. Z drugiej strony nigdy nie testowałem konkretnie połączenia 3G.
Stephen Ostermiller

Dziękuję Ci. Serwer nie jest zrównoważony pod względem obciążenia. Ponownie przetestuje serwer pod pewnymi parametrami i wypróbuje go.
User234334,

Odpowiedzi:


8

Początkowe połączenie

Przekonasz się, że początkowe połączenie obejmuje negocjowanie protokołu SSL, więc ponieważ uścisk dłoni jest wysoki, jest to dobry wskaźnik, że coś jest poważnie nie tak ze sposobem skonfigurowania protokołu SSL.

Google Chrome: zrozumienie czasu zasobów

Czas potrzebny na nawiązanie połączenia, w tym uzgadnianie / ponawianie prób TCP i negocjowanie protokołu SSL.

Uzgadnianie SSL i TTFB

Masz dwa główne problemy: czas spędzony na uzgadnianiu protokołu SSL i serwery oczekujące na TTFB (czas do pierwszego bajtu).

  • TTFB: 4079 ms (powinno być mniej niż 1000 ms)
  • Uzgadnianie SSL 11830 ms (powinno być krótsze niż 100 ms)

Należy również zauważyć, że podczas testowania za pomocą urządzeń 3G / 4G może to powodować dłuższe pierwsze bajty, ponieważ siła sygnałów telefonicznych różni się siłą ... może to powodować sporadyczne problemy z połączeniem i różne czasy oczekiwania.

Krok 1: Badanie problemu z SSL

To oczywiste, że masz poważny problem z SSL i najprawdopodobniej z powodu wadliwej instalacji OpenSSL lub podobnej. Zacznij od przetestowania certyfikatu SSL za pomocą Laboratorium SSL, a następnie naprawienia wszelkich sugerowanych problemów lub ostrzeżeń.

Jeśli protokół SSL nadal działa wolno, najprawdopodobniej masz przeciążony serwer lub awarię serwera. Jeśli to jest później, musisz spróbować zawęzić miejsce, w którym leży wina. Użyj stosu błędów serwera, jeśli potrzebujesz dodatkowej pomocy w tej sprawie, jeden użytkownik zgłosił, że utworzenie nowych kluczy rozwiązało powolny problem z SSL , z którym się spotkał, który może, ale nie musi być istotny.

Usługi równoważenia obciążenia mogą pomóc, jeśli jest to problem z zasobami serwera.

Krok 2: Badanie TTFB

Po zbadaniu rozwiązania problemu z SSL i nadal zwiększeniu TTFB, powinieneś przetestować swój serwer, upewniając się, że ma wystarczającą ilość zasobów.

Na czas pierwszego bajtu wpływ mają między innymi:

  • Odległość od użytkownika do centrum danych obsługującego serwer może zwiększyć TTFB
  • Niebuforowany GZIP może zwiększyć TTFB
  • Zatłoczone sieci mogą zwiększyć TTFB
  • Zatłoczone serwery mogą zwiększyć TTFB

Czasami zwiększenie procesora i pamięci RAM nie zawsze jest najlepszą opcją. Czasami lepiej jest wprowadzić moduł równoważenia obciążenia, ponieważ nie tylko oznacza to, że można łatwo uruchomić wiele serwerów obok siebie, ale w rzeczywistości odciąża buforowanie i żądania SSL. Niektóre inne korzyści obejmują:

ŹRÓDŁO

  • Buforowanie: urządzenie może przechowywać treści, które się nie zmieniają (takie jak obrazy) i udostępniać je bezpośrednio klientowi bez wysyłania ruchu do serwera WWW.
  • Kompresja: zmniejsza ilość ruchu dla obiektów HTTP poprzez kompresję plików przed ich wysłaniem.
  • Odciążanie SSL: Przetwarzanie ruchu SSL wymaga procesora serwera WWW, więc moduł równoważący obciążenie może zamiast tego wykonać to przetwarzanie.
  • Wysoka dostępność: w przypadku awarii jednego z nich można zastosować dwa urządzenia równoważące obciążenie.

Wskazówki dotyczące obniżania TTFB:


Dziękuję za szczegółowe wyjaśnienie. Ponownie przetestuje serwer pod kątem sugerowanych parametrów i wdroży najlepiej!
User234334,

Wykres na pytaniu oddziela uzgadnianie SSL od początkowego żądania i TTFB. Zgodnie z tym wykresem problem dotyczy protokołu SSL przed wysłaniem żądania.
Stephen Ostermiller

@StephenOstermiller ładnie zauważony. Oczekiwanie na czas TTFB wynosi 4000 ms, a SSL ponad 11000 ms. Prawdopodobnie SSL wpływa na TTFB. Zaktualizowałem pytanie, aby to odzwierciedlić.
Simon Hayter

Dziękuję Ci! Przetestowałem mój SSL na www.ssllabs.com, a ocena to „A”. Nie zgłoszono żadnych ostrzeżeń / problemów. Odkryłem, że wersja Apache 2.2.15 jest nieaktualna. Musisz go teraz zaktualizować. Zawartość mojej witryny (rozmiar w TB) znajduje się w / var / www / html /. Czy aktualizacja / ponowna instalacja Apache usunie zawartość mojej witryny? Jakaś najbezpieczniejsza metoda aktualizacji bez utraty danych?
User234334,

Jeszcze jeden punkt - OpenSSL jest również najnowszą wersją.
User234334,

6

Czytając tytuł pytania , możesz przyspieszyć początkowe połączenie i uzgadnianie SSL / TLS. Działają one dla każdego połączenia, nie tylko 3G, więc i tak powinieneś używać ich jako najlepszej praktyki.

Najpierw użyj HTTP / 2 do obsługi witryny. Wymaga to Apache 2.4.17 lub nowszego .

Po drugie, skonfiguruj Apache, aby używał zszywania OCSP. Wymaga to Apache 2.3.3 lub nowszego oraz OpenSSL 0.9.8h lub nowszego, z dobrym przewodnikiem, aby skonfigurować go tutaj . Zszywanie OCSP nie przyspieszy sprawy, ale wykona część pracy dla klienta i pozwoli zaoszczędzić kłopotów z próbą wyszukiwania OCSP.

Czytając treść pytania , myślę, że masz znacznie większy problem ze środowiskiem hostingowym. Te czasy ładowania są niedopuszczalne. Wspominasz, że jest to „hosting współdzielony”, powinieneś skontaktować się z każdym, kto zarządza hostingiem współdzielonym i zapytać, dlaczego jego serwer jest tak wolny. Prawdopodobnie lepiej będzie spróbować innego hosta współdzielonego lub samodzielnie uruchomić VPS (jest to więcej pracy, ale daje większą szybkość i elastyczność).

Skoro już korzystasz z AWS, dlaczego nie wypróbować ich bezpłatnej warstwy, aby przetestować i uzyskać działający i zoptymalizowany serwer? Użyj go z subdomeną i niektórymi statycznymi stronami HTML do testowania, a następnie przenieś swoją główną stronę (w razie potrzeby skaluj się poza limity wolnych poziomów).

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.