| Termin | Definicja |
|---|---|
| zbyt duże payloady | Zbyt duże payloady wydłużają czas przetwarzania żądania i mogą przekroczyć limity systemu docelowego. Czym są zbyt duże payloadyPayload to część komunikatu przenosząca właściwe dane, na przykład treść żądania HTTP wysyłanego do aplikacji internetowej. Może nią być dokument JSON, formularz przesyłający plik, obraz zakodowany w żądaniu albo dane zwracane w odpowiedzi serwera. Zbyt duży payload powstaje wtedy, gdy jego rozmiar przekracza limit przyjęty przez klienta, serwer, serwer proxy, bramę API, bibliotekę programistyczną albo system, do którego dane mają zostać zapisane. Nie istnieje jeden uniwersalny limit obowiązujący dla wszystkich aplikacji. Dopuszczalny rozmiar zależy od konkretnej implementacji oraz konfiguracji całego łańcucha komunikacji. Duży komunikat zajmuje więcej miejsca w pamięci i wymaga przesłania większej liczby bajtów. Przy tym samym łączu jego transfer trwa dłużej, a odbiorca musi zwykle odebrać całość lub znaczną część danych przed rozpoczęciem walidacji i przetwarzania. W przypadku formatu JSON rozmiar zwiększają również nazwy pól, powtarzające się struktury oraz tekstowe reprezentacje liczb i danych binarnych. Kodowanie binarnych plików do Base64 dodatkowo zwiększa objętość danych mniej więcej o jedną trzecią, ponieważ trzy bajty wejściowe są przedstawiane jako cztery znaki, z uwzględnieniem narzutu formatowania. Jak duży payload wpływa na działanie systemuPrzetwarzanie dużego żądania może wydłużyć czas oczekiwania na odpowiedź i zwiększyć zużycie pamięci operacyjnej. Aplikacja może najpierw zbuforować całe ciało żądania, a dopiero potem przekazać je parserowi JSON, modułowi obsługi formularzy lub procedurze zapisu pliku. W takim modelu wiele równoczesnych żądań może zająć znaczną część dostępnej pamięci. Skutkiem bywają błędy alokacji, restart procesu, odrzucanie kolejnych połączeń albo przekroczenie limitu czasu. Znaczenie ma także rozmiar odpowiedzi: generowanie dużego wyniku może obciążyć bazę danych, proces aplikacji i łącze sieciowe. Przekroczenie limitu często kończy się kodem HTTP 413 Content Too Large, dawniej opisywanym jako Payload Too Large. Odpowiedź z tym kodem oznacza, że serwer odrzucił żądanie z powodu jego rozmiaru. W praktyce komunikat może zostać wygenerowany wcześniej przez reverse proxy lub bramę API, zanim żądanie dotrze do właściwej aplikacji. Inne objawy to przerwane połączenie, błąd biblioteki klienta, timeout podczas wysyłania lub odpowiedź 400, jeśli konkretna warstwa używa ogólnej obsługi nieprawidłowego żądania. Dlatego sam kod błędu nie zawsze wskazuje komponent, który faktycznie odrzucił dane. Rozpoznawanie i ograniczanie problemuDiagnostykę należy rozpocząć od ustalenia rzeczywistego rozmiaru żądania i odpowiedzi, a następnie prześledzenia drogi komunikatu przez klienta, proxy, bramę, serwer aplikacyjny i usługę docelową. W żądaniach HTTP rozmiar może być podany w nagłówku Rozmiar danych należy ograniczać po stronie klienta i serwera. Klient może odrzucić plik przed wysłaniem, pokazać jego rozmiar oraz przesyłać dane w mniejszych częściach. Serwer powinien sprawdzać limit przed kosztownym parsowaniem, kończyć odbiór po przekroczeniu dozwolonej wartości i zwracać jednoznaczną odpowiedź. Duże pliki lepiej przesyłać jako strumień lub w częściach niż umieszczać je w jednym dokumencie JSON. Przy dużych wynikach pomocne są filtrowanie pól, paginacja, kompresja stosowana po ocenie jej kosztu oraz pobieranie danych partiami. Samo zwiększenie limitu nie usuwa problemu zużycia pamięci i może zwiększyć podatność usługi na przeciążenie. Znaczenie dla laptopa, komputera i aplikacji użytkownikaNa komputerze użytkownika zbyt duże payloady mogą pojawić się podczas wysyłania załącznika, synchronizacji plików, korzystania z panelu internetowego albo aktualizacji programu. Problem nie musi oznaczać uszkodzenia laptopa czy komputera PC. Częstą przyczyną jest limit usługi internetowej, serwera pośredniczącego lub aplikacji, a także niestabilne połączenie, które powoduje wielokrotne ponawianie transferu. Diagnostyka powinna obejmować rozmiar pliku, rodzaj żądania, komunikat zwracany przez usługę, działanie tej samej operacji w innej przeglądarce oraz zachowanie przy mniejszym pliku. Należy również sprawdzić, czy aplikacja nie tworzy niepotrzebnie wielu kopii danych w pamięci. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a w ramach diagnostyki można ustalić, czy problem z przesyłaniem danych wynika z konfiguracji programu, przeglądarki, systemu lub połączenia sieciowego. W przypadku aplikacji internetowej konieczne może być także wskazanie administratorowi usługi konkretnego rozmiaru żądania, czasu wystąpienia błędu i otrzymanego kodu HTTP. Takie informacje pozwalają odróżnić ograniczenie po stronie urządzenia od limitu ustawionego na serwerze. Zwiększanie rozmiaru payloadu powinno być poprzedzone sprawdzeniem, czy wszystkie elementy infrastruktury obsługują nową wartość. |