Strona ładuje się długo, a zamiast treści pojawia się komunikat error 504. Taki błąd zwykle nie oznacza problemu z komputerem użytkownika, lecz sytuację, w której serwer pośredniczący zbyt długo czekał na odpowiedź aplikacji, serwera origin albo innej usługi. Wyjaśniam, skąd bierze się kod 504, jak odróżnić go od podobnych błędów i co zrobić jako użytkownik lub administrator strony.
Najważniejsze informacje o błędzie 504 w kilku punktach
- 504 Gateway Timeout oznacza przekroczenie czasu oczekiwania na odpowiedź z serwera nadrzędnego.
- Najczęstsze przyczyny to przeciążona aplikacja, wolne zapytania do bazy danych, awaria usługi zewnętrznej albo problem sieciowy.
- Jeśli błąd widzą wszyscy użytkownicy, problem leży zwykle po stronie serwera lub infrastruktury, a nie przeglądarki.
- Odświeżenie strony może pomóc tylko przy chwilowym przeciążeniu. Stały błąd wymaga analizy logów i czasu odpowiedzi.
- Podnoszenie limitu timeoutu bez usunięcia przyczyny często tylko opóźnia awarię i zwiększa obciążenie systemu.

Co naprawdę oznacza kod 504 Gateway Timeout
Numer 504 należy do grupy błędów HTTP 5xx, czyli problemów powstających po stronie serwera. Dokładniej informuje, że serwer działający jako brama lub proxy otrzymał żądanie, ale nie dostał na czas odpowiedzi od kolejnego elementu infrastruktury.
W praktyce przeglądarka nie zawsze łączy się bezpośrednio z aplikacją. Po drodze może znajdować się reverse proxy, load balancer, firewall aplikacyjny, CDN albo brama API. Każdy z tych elementów może przekazywać żądanie dalej i czekać na odpowiedź. Jeżeli ustalony limit minie, użytkownik zobaczy komunikat o przekroczeniu czasu.
Przykładowy przebieg wygląda tak: przeglądarka wysyła żądanie do serwera WWW, serwer przekazuje je do aplikacji, aplikacja odpytuje bazę danych, a potem wynik wraca tą samą drogą. Gdy baza danych odpowiada po 2 minutach, ale proxy czeka tylko 60 sekund, dla użytkownika operacja kończy się błędem, nawet jeśli aplikacja ostatecznie dostarczyłaby poprawną odpowiedź.
To ważne rozróżnienie. Kod 504 nie mówi automatycznie, że serwer jest całkowicie wyłączony. Często oznacza, że działa, lecz nie zdążył odpowiedzieć w wymaganym czasie. Przyczyna może być chwilowa, ale powtarzające się błędy wskazują już na problem z wydajnością, konfiguracją albo komunikacją między usługami.
Najczęstsze przyczyny przekroczenia czasu
Najbardziej typowym źródłem problemu jest przeciążenie serwera. Gdy rośnie liczba odwiedzających, procesor, pamięć lub liczba dostępnych połączeń może zostać wyczerpana. Nowe żądania trafiają wtedy do kolejki i czekają tak długo, że proxy zamyka połączenie przed otrzymaniem wyniku.
Wolna aplikacja lub zapytanie do bazy
Jedna strona może działać poprawnie, a inna regularnie zwracać 504. Zwykle oznacza to, że problem dotyczy konkretnego procesu, na przykład wyszukiwania produktów, generowania raportu albo pobierania danych z wielu tabel. Szczególnie podejrzane są zapytania bez odpowiednich indeksów, operacje na bardzo dużych zbiorach danych i funkcje wykonujące wiele obliczeń naraz.
W mojej praktyce najczęściej nie zaczynam od zmiany ustawień serwera, tylko od sprawdzenia, który endpoint odpowiada najwolniej. Jeżeli 504 pojawia się wyłącznie przy eksporcie danych, zwiększenie zasobów całej witryny może być mniej skuteczne niż podział eksportu na mniejsze zadania wykonywane w tle.
Awaria usługi zależnej
Nowoczesna strona często korzysta z zewnętrznego systemu płatności, API dostawcy, usługi map, systemu logowania albo magazynu plików. Gdy taka usługa nie odpowiada, aplikacja może bez końca czekać na wynik. Z perspektywy użytkownika wygląda to jak awaria witryny, chociaż źródło leży poza jej głównym serwerem.
Błędna konfiguracja infrastruktury
Timeout może być ustawiony zbyt nisko w proxy, load balancerze lub serwerze aplikacyjnym. Czasem występuje też niezgodność limitów. Przykładowo proxy przerywa połączenie po 30 sekundach, a aplikacja potrzebuje 45 sekund na wygenerowanie raportu.
Nie oznacza to jednak, że należy bez namysłu ustawić bardzo długi limit. Długi timeout nie przyspiesza aplikacji. Jeśli żądanie blokuje zasoby przez kilka minut, większa liczba takich operacji może doprowadzić do jeszcze większego przeciążenia.
Problemy z siecią i DNS
Serwer pośredniczący może mieć trudność z dotarciem do serwera docelowego z powodu zapory, błędnej trasy, niedostępnego portu lub nieprawidłowej konfiguracji DNS. W takim przypadku aplikacja może działać lokalnie, ale nie będzie osiągalna z miejsca, w którym znajduje się proxy.
Znaczenie ma też lokalizacja użytkownika. Jeżeli błąd występuje tylko w jednym regionie, warto sprawdzić routing, działanie konkretnego węzła CDN i reguły bezpieczeństwa. Gdy problem pojawia się globalnie, bardziej prawdopodobna jest awaria originu, aplikacji albo wspólnej usługi zależnej.
504 a inne podobne błędy serwera
Komunikaty 502, 503, 504, 522 i 524 bywają mylone, ale wskazują na różne etapy problemu. Nie każdy dostawca infrastruktury używa ich dokładnie w ten sam sposób, dlatego najważniejsze są logi i miejsce, w którym powstała odpowiedź.
| Kod | Znaczenie | Typowy trop diagnostyczny |
|---|---|---|
| 502 | Proxy otrzymało nieprawidłową odpowiedź od serwera nadrzędnego. | Sprawdź aplikację, port, protokół i poprawność odpowiedzi backendu. |
| 503 | Usługa chwilowo nie może obsłużyć żądania. | Zweryfikuj przeciążenie, tryb konserwacji i dostępne zasoby. |
| 504 | Nie nadeszła odpowiedź w wymaganym czasie. | Zmierz czas aplikacji, bazy danych i usług zewnętrznych. |
| 522 | W niektórych sieciach proxy nie może nawiązać połączenia z originem. | Sprawdź osiągalność serwera, firewall i połączenia TCP. |
| 524 | Połączenie z originem zostało nawiązane, ale odpowiedź nie pojawiła się na czas. | Przeanalizuj długie procesy i limit odczytu odpowiedzi. |
Różnica między 502 a 504 jest szczególnie praktyczna. Przy kodzie 502 serwer pośredniczący dostał odpowiedź, ale była ona błędna lub niekompletna. Przy 504 główny problem polega na tym, że odpowiedzi nie było wystarczająco szybko.
Co może zrobić zwykły użytkownik
Jeżeli odwiedzasz stronę i widzisz taki komunikat, zacznij od prostych czynności. Odczekaj minutę lub dwie i odśwież stronę, najlepiej bez wielokrotnego klikania przycisku. Przy chwilowym skoku ruchu kolejna próba może już trafić na zwolniony serwer.
- Sprawdź inną podstronę tej samej witryny.
- Otwórz stronę w trybie prywatnym, aby wykluczyć problem z rozszerzeniem lub pamięcią podręczną.
- Przetestuj połączenie przez inną sieć, na przykład internet mobilny.
- Sprawdź, czy błąd występuje również na innym urządzeniu.
- Jeśli problem dotyczy logowania lub płatności, nie wysyłaj formularza wielokrotnie.
Zmiana DNS, czyszczenie cookies czy restart routera rzadko naprawiają prawdziwy timeout po stronie serwera. Mogą pomóc tylko wtedy, gdy problem jest lokalny albo domena kieruje urządzenie do niedostępnego adresu. Jeżeli kilka osób widzi ten sam komunikat, naprawa wymaga działania administratora strony.
Przy zakupach i płatnościach zachowaj ostrożność. Błąd nie zawsze oznacza, że operacja się nie wykonała. Najpierw sprawdź historię zamówień, wiadomość e-mail i obciążenie rachunku, a dopiero później ponów próbę.
Jak zdiagnozować i usunąć problem po stronie serwera
Administrator powinien zacząć od ustalenia zakresu awarii. Trzeba sprawdzić, czy błąd dotyczy całej witryny, jednej ścieżki, konkretnego regionu, określonej metody HTTP czy tylko użytkowników przechodzących przez CDN. Taka informacja szybko zawęża obszar poszukiwań.
Sprawdź logi w odpowiedniej kolejności
Najpierw analizuję logi reverse proxy lub load balancera, a potem logi aplikacji i bazy danych. Szukam czasu żądania, identyfikatora śledzenia, adresu endpointu oraz momentu, w którym połączenie zostało przerwane. Sam komunikat 504 jest objawem, nie pełną diagnozą.
Jeżeli proxy pokazuje 60 sekund oczekiwania, a aplikacja loguje zakończenie zadania po 75 sekundach, przyczyna jest dość klarowna. Jeśli aplikacja nie rejestruje żądania wcale, problem może leżeć wcześniej, na przykład w DNS, firewallu, routingu albo konfiguracji load balancera.
Zmierz najwolniejsze elementy
Warto rozdzielić czas odpowiedzi na kilka etapów: połączenie, wykonanie logiki biznesowej, zapytania do bazy, komunikację z zewnętrznym API i przygotowanie odpowiedzi. Narzędzia APM oraz monitoring infrastruktury pomagają zobaczyć, czy wąskim gardłem jest procesor, pamięć, pula połączeń, blokada w bazie czy opóźnienie sieci.
Skuteczne poprawki zależą od źródła problemu. Czasem wystarczy indeks w bazie, cache dla często pobieranych danych albo ograniczenie liczby rekordów. W innych przypadkach trzeba zwiększyć liczbę instancji aplikacji, rozdzielić ruch lub przenieść długą operację do kolejki zadań.
Przeczytaj również: Wysoki ping - co to jest i jak skutecznie zmniejszyć opóźnienie?
Ustaw timeouty zgodnie z charakterem operacji
Strona logowania i zwykły odczyt danych powinny odpowiadać szybko. Generowanie dużego raportu może trwać dłużej, ale nie zawsze powinno odbywać się w jednym żądaniu HTTP. Najbezpieczniejszy model to uruchomienie zadania w tle, pokazanie statusu postępu i udostępnienie wyniku po zakończeniu.
Timeout warto zwiększać dopiero wtedy, gdy wiadomo, że dłuższy czas jest uzasadniony. Równocześnie trzeba ustawić limity liczby równoległych zadań, monitorować kolejkę i zapewnić kontrolowane ponawianie. Bez tego system może przyjąć więcej pracy, niż jest w stanie przetworzyć.
Jak ograniczyć ryzyko kolejnych timeoutów
Najlepsza ochrona przed powracającym 504 nie polega na samym podniesieniu parametrów serwera. Potrzebny jest monitoring czasu odpowiedzi, alerty dla błędów 5xx i obserwacja najwolniejszych żądań, najlepiej z podziałem na endpointy oraz regiony.
- Ustaw alert, gdy odsetek odpowiedzi 5xx przekroczy ustalony próg.
- Mierz percentyle czasu odpowiedzi, zwłaszcza p95 i p99.
- Testuj aplikację pod obciążeniem przed kampanią lub dużą premierą.
- Stosuj cache tam, gdzie dane nie muszą być generowane przy każdym żądaniu.
- Ograniczaj czas oczekiwania na zewnętrzne API i obsługuj jego brak odpowiedzi.
- Projektuj operacje raportowe i eksportowe jako zadania asynchroniczne.
Pomaga również czytelna strona błędu. Użytkownik powinien dostać informację, że problem jest tymczasowy, oraz wskazówkę, czy ponowić próbę. W systemach biznesowych dobrze działa identyfikator zgłoszenia, dzięki któremu administrator może szybko odnaleźć konkretne żądanie w logach.
Najrozsądniejsza zasada brzmi prosto: najpierw ustal, który element nie odpowiedział na czas, a dopiero potem zmieniaj konfigurację. Dzięki temu kod 504 przestaje być tajemniczym komunikatem, a staje się użytecznym sygnałem o konkretnym problemie między użytkownikiem, proxy i aplikacją.