O czym mówi błąd 500 Internal Server Error?

Błąd 500 to ogólny komunikat serwera oznaczający, że coś poszło nie tak, ale serwer nie potrafi (lub nie chce) powiedzieć dokładnie, co. Innymi słowy, serwer napotkał nieoczekiwany problem, który uniemożliwił realizację żądania użytkownika.

Błąd 500 nie wynika z błędnego działania przeglądarki czy problemów po stronie użytkownika – przyczyna zawsze leży po stronie serwera, jego konfiguracji, usługi na nim uruchomionej lub aplikacji (strony internetowej).

Najczęstsze przyczyny błędu 500

Chociaż komunikat o błędzie nie daje konkretnych informacji, najczęściej za niego odpowiadają:

  • Brak miejsca na dysku – wbrew pozorom to jedna z najczęstszych przyczyn błędu 500 i pokrewnych
  • Błędy w kodzie aplikacji – np. nieobsługiwane wyjątki, błędne zapytania do bazy danych, przekroczenie limitu pamięci.
  • Błędy konfiguracji serwera HTTP – np. błędna konfiguracja w nginx.conf, httpd.conf, web.config czy .htaccess
  • Problemy z integracją z wewnętrznymi i zewnętrznymi usługami – np. błędy komunikacji z bazą danych lub innymi systemami zewnętrznymi.
  • Zbyt duże obciążenie serwera – przeciążony serwer może zwrócić błąd 500 lub 503, jeśli nie radzi sobie z obsługą żądań.
  • Nieoczekiwane wyłączenie wymaganej usługi uruchomionej na serwerze - np. z powodu nieoczekiwanego błędu lub nieudanej aktualizacji
  • Nieprawidłowe uprawnienia do plików lub katalogów – np. zbyt restrykcyjne lub zbyt luźne prawa dostępu.

Jak znaleźć szczegóły błędu?

Aby skutecznie rozwiązać problem, musisz przede wszystkich dotrzeć do konkretnej przyczyny. Taką informację najpewniej znajdziesz w logach na serwerze. W pierwszej kolejności sprawdź logi aplikacji (np. strony internetowej) uruchomionej na serwerze, a w dalszej kolejności logi serwera HTTP.

Lokalizacja logów serwera HTTP:

  • Apache na Linux: /var/log/apache2/error.log
  • Nginx na Linux: /var/log/nginx/error.log
  • IIS: C:\inetpub\logs\LogFiles\W3SVC1 oraz Event Viewer (podgląd zdarzeń)

Lokalizacja logów aplikacji uruchomionej na serwerze:

W zależności od uruchomionej aplikacji (np. strony internetowej), lokalizacja logów może się różnić. Najlepiej sprawdzić dokumentację danej aplikacji, aby dowiedzieć się, gdzie są zapisywane logi. W niektórych przypadkach, takich jak WordPress, logowanie błędów nie jest domyślnie aktywne – dopiero po jego włączeniu logi staną się dostępne.

Jak naprawić błąd 500?

W każdym przypadku pierwszym krokiem w rozwiązywaniu problemu z błędem 500 powinno być ustalenie bezpośredniej przyczyny jego wystąpienia. Jeśli tego nie zrobimy, narażamy się na ponowne pojawienie się błędu – nawet jeśli tymczasowo ustąpił. Logi nie zawsze precyzyjnie wskażą źródło problemu, ale z pewnością nakierują nas na odpowiedni obszar do analizy, np. brak dostępnych zasobów serwera (CPU, RAM, przestrzeń dyskowa), problemy z komunikacją z bazą danych czy nieprzewidziane wyjątki w kodzie aplikacji.

Rozwiązanie zależy od przyczyny, ale poniżej znajdziesz kilka wskazówek co możesz zrobić, jeżeli logi niewiele pomagają:

  • Sprawdź wolną przestrzeń na dysku - to jeden z najczęstszych powodów
  • Sprawdź aktualne procesy i obciążenie serwera - np. komendą htop w systemie Linux lub otwórz Task Manager w Windows
  • Zrestartuj serwer – zrestartuj przynajmniej serwer HTTP i bazę danych, ale najlepiej uruchom ponownie całą maszynę
  • Zweryfikuj, czy w ostatnim czasie oprogramowanie na serwerze nie zaktualizowało się samoczynnie - większość systemów operacyjnych automatycznie wykonuje aktualizacje pakietów. Dotyczy to zarówno usług uruchomionych na serwerze (np. bazy danych) jak i aplikacji (np. Wordpress, który ma możliwość automatycznej aktualizacji).
  • Zweryfikuj, czy w ostatnim czasie konfiguracja serwera nie została zmieniona

Monitoring wewnętrzny

Serwer oraz uruchomioną na nim aplikację warto wyposażyć w monitoring wewnętrzny – taki, który poinformuje wskazane osoby o problemach z serwerem lub stroną internetową.

Narzędzia takie jak Sentry czy Rollbar umożliwiają monitorowanie zarówno warstwy frontendowej, jak i backendowej aplikacji, niezależnie od użytego języka programowania. Ich instalacja jest prosta i zazwyczaj sprowadza się do dodania krótkiego fragmentu kodu do głównego pliku, np. index.php lub index.html. Oba narzędzia oferują darmowe wersje, które w większości przypadków są w pełni wystarczające.

Zachęcamy do zapoznania się z artykułem: Jak monitorować błędy JavaScript na stronie z Sentry?

Monitoring zewnętrzny

Monitoring zewnętrzny to monitoring realizowany przez usługę niezależną od infrastruktury serwera. Jego głównym celem jest regularne sprawdzanie (np. co minutę), czy strona internetowa lub inna aplikacja webowa działa poprawnie.

Uruchomienie takiego monitoringu jest niezwykle proste – zazwyczaj wystarczy podać adres URL strony oraz adres e-mail lub numer telefonu, na który

Dowiedz się więcej: Monitorowanie dostępności strony internetowej.

Podsumowanie

Błąd 500 Internal Server Error to jeden z najczęstszych i najbardziej ogólnych błędów HTTP. Może mieć wiele przyczyn – od błędów aplikacji po problemy z konfiguracją serwera. Na szczęście, z pomocą logów i narzędzi do monitorowania możesz szybko dotrzeć do źródła problemu i go naprawić, zanim użytkownicy zauważą, że coś jest nie tak.