Gbu Vps
Media i wydawnictwa

Skrócenie czasu ładowania strony z 4.2s do 1.4s dla portalu

Przeniesienie bazy danych na dedykowane macierze NVMe i zmiana konfiguracji serwera Nginx w warszawskim centrum danych.

3x szybsze ładowanie
KlientWiadomości Lokalne
BranżaMedia i wydawnictwa
HarmonogramPaździernik 2024

Redakcja portalu Wiadomości Lokalne borykała się z powolnym działaniem serwisu informacyjnego. Przy 47 tysiącach unikalnych użytkowników miesięcznie, czas ładowania przekraczający 4 sekundy powodował, że czytelnicy uciekali do konkurencji, zanim zdążyli przeczytać nagłówek.

NginxNVMe RAID 10BrotliFastCGI CachePHP 8.2Warszawa DC

Wyzwanie

Portal działał na starym serwerze wirtualnym z dyskami HDD, co przy większym ruchu całkowicie blokowało odczyt bazy danych. W godzinach szczytu, czyli między 8:15 a 10:40 rano, czas odpowiedzi serwera (TTFB) wzrastał do 2.3 sekundy. Czytelnicy zgłaszali błędy przy próbie dodawania komentarzy, a redaktorzy nie mogli sprawnie publikować pilnych wiadomości. Strona główna ważyła 3.7 MB, co przy słabszym łączu mobilnym trwało wieki.

Problem pogłębiał się podczas publikacji popularnych materiałów wideo, które nadmiernie obciążały procesor. Brak odpowiedniego buforowania sprawiał, że każde zapytanie do bazy danych musiało być przetwarzane od nowa, co generowało niepotrzebne kolejki na serwerze.

Podejście

Nasz 3-osobowy zespół przeprowadził audyt infrastruktury trwający 4 dni robocze. Przeanalizowaliśmy logi serwera Nginx i zapytania SQL, które wykonywały się najdłużej. Zamiast proponować drogie maszyny o ogromnej mocy, skupiliśmy się na zmianie architektury przechowywania danych.

Wytypowaliśmy 18 najbardziej problematycznych wtyczek w systemie CMS, które generowały zbędne zapytania. Zdecydowaliśmy się na migrację do centrum danych zlokalizowanego przy ul. Konstruktorskiej w Warszawie, aby skrócić fizyczną drogę pakietów do użytkowników z Mazowsza. Całość prac podzieliliśmy na 3 etapy, aby uniknąć przestojów w działaniu portalu podczas dnia pracy redakcji.

Rozwiązanie

Przenieśliśmy całą strukturę na dedykowaną instancję z macierzą NVMe w układzie RAID 10. Pozwoliło to na drastyczne przyspieszenie operacji zapisu i odczytu bazy danych o rozmiarze 147 GB. Skonfigurowaliśmy serwer Nginx do obsługi kompresji Brotli oraz wdrożyliśmy mechanizm FastCGI Cache, który serwuje gotowe pliki HTML zamiast generować je przy każdym wejściu.

Dodatkowo zoptymalizowaliśmy pulę PHP-FPM, dopasowując ją do 8-rdzeniowego procesora, co ustabilizowało zużycie pamięci RAM na poziomie 63% nawet przy nagłych skokach ruchu. Wszystkie obrazy na stronie są teraz automatycznie konwertowane do formatu WebP przez moduł serwerowy, co zmniejszyło wagę strony głównej z 3.7 MB do 1.2 MB.

Rezultaty

Dzięki zmianie sprzętu na NVMe oraz poprawie konfiguracji oprogramowania, portal Wiadomości Lokalne odzyskał stabilność i płynność działania nawet w godzinach największego natężenia ruchu.

1.4s
Pełny czas ładowania strony
-67%
Redukcja czasu odpowiedzi TTFB
23%
Spadek współczynnika odrzuceń
0
Błędów bazy danych w godzinach szczytu

Harmonogram

  1. 4-7 Października 2024
    Audyt wydajnościowy i analiza logów SQL
  2. 12 Października 2024
    Konfiguracja nowego środowiska na dyskach NVMe
  3. 14 Października 2024
    Migracja bazy danych i testy obciążeniowe
  4. 15 Października 2024
    Uruchomienie kompresji Brotli i FastCGI Cache

"Początkowo myśleliśmy, że to wina kodu strony, ale Gbu Vps pokazało nam, że to dyski serwera były wąskim gardłem. Teraz portal działa błyskawicznie, a redakcja wreszcie nie czeka 20 sekund na zapisanie artykułu."

Andrzej Zieliński Redaktor Naczelny, Wiadomości Lokalne Listopad 2024

Formalności

Publikowane dane mają charakter informacyjny i nie są wiążącym doradztwem technicznym.

Gbu Vps Sp. z o.o. · ul. Targowa 24, 03-728 Warszawa, Polska · NIP: 1132948501 · KRS: 0000819472 · REGON: 015849302 · Kapitał zakładowy: 77 000 PLN

+48 22 518 90 63 · root@gbuvps.com