Dlaczego zbyt wiele zapytań do serwera czy bazy danych powoduje zepsucie się serwera?

0

Dlaczego zbyt wiele zapytań do serwera czy bazy danych powoduje zepsucie się serwera?

2 pytanie:
I dajmy na to jeśli mam jakiś errror unhandled, (w jakimś backendzie np. node) np. w aplikacji pojawiało się dzielenie przez zero nie było catcha i się wysypało, to cała aplikacja przestaje działać? dopóki ktoś jej nie zresetuje, oczywiście chodzi mi tutaj o taką aplikację napisaną w 5 min, nie o aplikacje np. google-a

1

Ad 2. To wszstko zależy jak leży. Taki prosty serwer to zwykle wyjątek złapie i zwróci zwróci jako 500. Ale da się tak, żeby nie złapał i wtedy umrze jak każdy inny program, gdy poleci wyjątek. Zwykle się stawia coś ponad to, co zresetuje kontener, gdy serwer padnie.

2

Serwer HTTP może się "zepsuć" z przynajmniej 4 powodów:

  1. Crash fizyka albo wirtualki, np. ktoś zrzucił bombę atomową na DC, wypiął się dysk albo po prostu coś walnęło na poziomie systemu operacyjnego.
  2. Poleciał nieobsłużony fatal error, np. na JVM-ce poszło OutOfMemoryError. Wtedy trzeba zrestartować proces/kontener.
  3. Wszystkie wątki, które obsługują żądania HTTP są zajęte - tzw. wysycenie puli wątków. Wówczas serwer zacznie odrzucać requesty i to też jest awaria.
  4. Otwartych jest zbyt wiele połączeń do serwera - tzw. wysycenie deskryptorów. Serwer jest bezużyteczny, trzeba poczekać na zwolnienie połączeń - awaria.
1
  1. Nie powoduje, ale jak sobie zrobisz jakiegoś DoSa albo deadlock to może przestać odpowiadać.
  2. Zwykle to ubija ci jeden wątek aplikacji który ten kod wykonywał, więc poza jakąś ekstremalną sytuacją kiedy wywaliło ci głowny wątek (to by raczej był błąd we frameworku czy w serwerze) raczej nie poskłada ci aplikacji. Ale znów może spowodować inne problemy -> np. umrze wątek który zrobił gdzieś jakiegoś locka i potem coś będzie wisieć.
2

Dodatkowo mogą być problemy z memory leakami, nawet w językach używających GC

0

a teraz już rozumiem, dziękuję za odpowiedzi :))

1 użytkowników online, w tym zalogowanych: 0, gości: 1