HTTP 504 – co oznacza ten błąd
504 jest bliskim krewnym 502, ale dotyczy konkretnie czasu – serwer pośredniczący (proxy, load balancer) wysłał żądanie do backendu i czekał na odpowiedź, ale backend nie zdążył odpowiedzieć w wyznaczonym limicie czasu. Backend niekoniecznie się wywalił – po prostu przetwarzał żądanie zbyt długo, a proxy w pewnym momencie się poddaje i zwraca błąd, zamiast czekać w nieskończoność.
Co to oznacza w praktyce na stronie WordPress
Najczęstsza przyczyna to wolne zapytanie do bazy danych – brakujący indeks, mocno rozrośnięta tabela wp_options, albo zbyt duży „autoload” (dane ładowane przy każdym żądaniu, nawet jeśli strona ich nie potrzebuje na starcie). Drugi typowy przypadek to generowanie ciężkiej strony bez cache – sklep z dużą liczbą produktów, złożone zapytania WooCommerce, brak cache stron albo cache obiektów. Trzeci: wtyczka, która w trakcie ładowania strony robi synchroniczne zapytanie do zewnętrznego serwisu (sprawdzanie statusu płatności, pobieranie danych z API), a ten serwis akurat odpowiada wolno – WordPress czeka na niego i sam staje się wolny. Bywa też, że limit czasu wykonania PHP jest ustawiony wyżej niż limit czasu na poziomie proxy, więc PHP jeszcze próbuje dokończyć, a proxy już się poddało. W naszych testach obciążeniowych (opisanych na jak testujemy) właśnie długi czas odpowiedzi backendu jest jednym z pierwszych sygnałów, które łapiemy.
Co sprawdzić
- Log wolnych zapytań do bazy danych, jeśli hosting go udostępnia
- Wtyczki wykonujące zapytania do zewnętrznych API w trakcie ładowania strony
- Czy działa cache stron i cache obiektów – ich brak jest częstą przyczyną długiego czasu generowania
- W narzędziach deweloperskich przeglądarki – które konkretne żądanie „wisi” najdłużej przed timeoutem
Wolne zapytania do bazy przy złożonych sklepach WooCommerce to jeden z powodów, dla których codziennie testujemy hosting pod realnym obciążeniem — zobacz wyniki w naszym rankingu hostingów pod WooCommerce.