| Termin | Definicja |
|---|---|
| błąd 500 Internal Server Error | Błąd 500 Internal Server Error oznacza wystąpienie nieokreślonego problemu po stronie serwera podczas przetwarzania żądania. Co oznacza odpowiedź HTTP 500Błąd 500 Internal Server Error jest ogólnym kodem odpowiedzi protokołu HTTP oznaczającym, że serwer napotkał nieoczekiwany problem podczas obsługi żądania. Kod nie wskazuje jednej konkretnej przyczyny. Informuje jedynie, że przetwarzanie po stronie serwera zakończyło się niepowodzeniem i serwer nie był w stanie zwrócić prawidłowej odpowiedzi dla danego żądania. W przeciwieństwie do błędów z grupy 4xx problem nie musi wynikać z nieprawidłowego adresu, braku uprawnień ani błędnych danych przesłanych przez klienta. Odpowiedź 500 może zostać wygenerowana przez aplikację internetową, serwer aplikacyjny albo element pośredniczący, który przekazuje żądania do właściwego programu. Przeglądarka zwykle wyświetla wtedy prosty komunikat „500 Internal Server Error”, natomiast szczegóły przyczyny znajdują się w logach serwera lub aplikacji. Sam kod nie rozstrzyga, czy źródłem problemu był wyjątek w kodzie, nieprawidłowa konfiguracja, awaria zależności, błąd połączenia z bazą danych albo wyczerpanie zasobów systemowych. Najczęstsze źródła błędu po stronie serweraJedną z typowych przyczyn jest nieobsłużony wyjątek powstały podczas wykonywania kodu aplikacji. Może on wynikać z próby odczytu nieistniejącego elementu, błędnej konwersji danych, nieprawidłowego przetworzenia formularza lub założenia, że odpowiedź z zewnętrznej usługi zawsze będzie miała oczekiwany format. Jeżeli aplikacja nie przechwyci takiego wyjątku i nie zamieni go na kontrolowany komunikat, warstwa HTTP może zwrócić kod 500. Błąd może również pojawić się wskutek konfiguracji środowiska. Przykładem jest brak wymaganego parametru, nieprawidłowa ścieżka do pliku, błędne uprawnienia procesu, niedostępna usługa pomocnicza albo niezgodność wersji używanego modułu. Czasem problem powoduje przekroczenie limitu pamięci, czasu wykonania lub liczby dostępnych połączeń. W systemach korzystających z reverse proxy odpowiedź 500 może być zwrócona przez samą aplikację, przez proxy albo przez inną warstwę pośrednią, dlatego ustalenie źródła wymaga sprawdzenia całego łańcucha obsługi żądania. Jak ustalić przyczynę na podstawie logówDiagnostykę rozpoczyna się od ustalenia czasu wystąpienia błędu, adresu żądania, metody HTTP oraz identyfikatora żądania, jeżeli system go zapisuje. Następnie porównuje się wpisy w dzienniku serwera HTTP z logami aplikacji. Istotne są komunikaty o wyjątkach, stosie wywołań, odrzuconym połączeniu, przekroczonym limicie, braku pliku lub błędzie konfiguracji. Sam wpis zawierający jedynie kod 500 jest niewystarczający, ponieważ nie opisuje mechanizmu, który doprowadził do awarii. Warto sprawdzić, czy błąd występuje dla wszystkich użytkowników i adresów, czy tylko dla określonego żądania, konta albo danych wejściowych. Powtarzalność problemu po jednej zmianie może wskazywać na błąd wdrożenia, natomiast występowanie tylko przy dużym obciążeniu sugeruje ograniczenie zasobów lub problem z zarządzaniem połączeniami. Jeżeli aplikacja korzysta z zewnętrznego API, bazy danych albo systemu plików, należy zweryfikować dostępność tej zależności i zgodność otrzymywanych danych z oczekiwanym formatem. Nie należy ujawniać użytkownikowi końcowemu pełnego stosu wywołań ani danych konfiguracyjnych, ponieważ komunikaty diagnostyczne mogą zawierać informacje przydatne do ataku. Postępowanie po wystąpieniu Internal Server ErrorJeżeli błąd pojawił się jednorazowo, ponowienie żądania może zakończyć problem, ale nie usuwa jego przyczyny. Przy powtarzalnym błędzie należy zabezpieczyć odpowiednie logi, odnotować moment wystąpienia i porównać go ze zmianami w kodzie, konfiguracji oraz dostępności usług zależnych. Naprawa może polegać na poprawieniu obsługi wyjątków, przywróceniu prawidłowych parametrów, skorygowaniu uprawnień, zwiększeniu dostępnego zasobu albo usunięciu niezgodności między komponentami. Po zmianie należy sprawdzić zarówno scenariusz powodujący błąd, jak i zwykłe działanie pozostałych funkcji. Na komputerze użytkownika warto odróżnić błąd 500 od problemu z przeglądarką lub lokalną siecią. Jeżeli ten sam adres zwraca identyczny kod na różnych urządzeniach i w różnych sieciach, bardziej prawdopodobna jest przyczyna po stronie usługi. Gdy komunikat pojawia się tylko na jednym komputerze, należy dodatkowo sprawdzić pamięć podręczną, rozszerzenia przeglądarki, ustawienia proxy oraz lokalne oprogramowanie filtrujące ruch. W przypadku diagnostyki technicznej potrzebne są jednak przede wszystkim informacje z serwera, ponieważ komputer klienta zwykle nie ma dostępu do kodu aplikacji ani dzienników opisujących wewnętrzny przebieg żądania. |