Wpis z mikrobloga

#kubernetes #java

Jakie proporcje pamięci dedykujecie na off-heap oraz na kontener? Zauważyłem, że gdy pozostawię więcej, to zarówno off-heap, jak i kontener zużywają więcej zasobów, a gdy zostawiam mniej, to chociaż nie ma awarii, to zużywają mniej pamięci.

Chciałbym rozważyć dwa przypadki:
1. 500m XMS/XMX
2. 1000m XMS/XMX

Jak ustawić kubernetes memory request? Ile z tego przewidujecie na off-heap, a ile na kontener?
  • 16
  • Odpowiedz
@Myrcin-: nie da się powiedzieć, musisz zmierzyć.
Wspierałem produkcyjne apki które miały poza heapem te 10%, a miałem takie co zjadały np. 14GB ram z czego ponad 6 poza heap...
  • Odpowiedz
@Myrcin-: nie wiem czy potrafię podać konkretny powód. Ot dość zawiły produkt biznesowy na wielu brandach, nie kojarzę by była jedna prosta przyczyna :O

10% procent zdarzało się i przy takich co jadły 3GB i przy takich co jadły 15. Nie było nigdy prostego wyjaśnienia, raczej zależało od tego jak aplikacja jest napisana i ile funkcjonalności. Ta z >6GB poza heap była dość skomplikowana i na świeżym stacku springbootowym. Wśród tych
  • Odpowiedz
via Android
  • 0
@annotate Dzięki! Ciężko mi zasymulować dobrze produkcję na środowisku testowym. Najlepiej robić fine tuning na danych produkcyjnych, ale na produkcji nie bardzo mogę się bawić konfiguracją, a jest dużo zmiennych, co utrudnia mi dojście do konkretnych wniosków.
  • Odpowiedz
@Myrcin-: no to iteracyjne, wypuść bardziej bezpieczne ustawienia (request i limits taki sam, spora rezerwa na offheap), zbierz statystyki pamięci z JVM, przeanalizuj, potem jakieś kroki.

Tak od siebie to zaproponowałbym przede wszystkim znaleźć jeden zestaw ustawień który zachowuje się sprawnie w jednym konkretnym ruchu. Np. "potwierdziłem że w testach 1 vcpu i 6GB ramu jest ok dla zalogowanych 30 userów, czyli średnia 150 requestów na sekundę", oczywiście na tyle na
  • Odpowiedz
via Android
  • 1
@Sz23_ Domyślne ustawienia czyli brak requestu? To nie są dobre praktyki. Zaczniesz ustawiać request jak Ci k8s zacznie pody ubijać xD
  • Odpowiedz
@Myrcin-: Mam tak jak on doradzał w tym filmiku, pamiętam bo miałem taska na to na 3SP i do zrobienia w 2-3 dni. Więc poustawiałem tak jak on tam pokazał i działa do tej pory.
Sz23_ - @Myrcin-: Mam tak jak on doradzał w tym filmiku, pamiętam bo miałem taska na ...
  • Odpowiedz
via Android
  • 0
@Sz23_ Tutaj dość ogólnikowo poruszył ten temat. Generalnie on mówi żeby mieć limit i request, a heap ustawić na około 75%. Tylko że 75% przy 16gb a 500mb to zupełnie inne wartości xD
  • Odpowiedz
  • 0
@Sz23_: Sprawdziłem, jak u mnie to wygląda. Aktualnie na 27 serwisów XMS stanowi między 35 a 65% memory request (im większy pod tym więcej %), ale wciąż mi daleko do tych 75% z filmiku, który przesłałeś.
  • Odpowiedz
@Myrcin-: czyli ten gość na filmiku uja się zna ? Niestety w IT jest jak w medycynie, jeden powie tak drugi inaczej i nie można tego do końca zweryfikować
  • Odpowiedz
@Myrcin-: ale wiesz, że nikt ci nie da gotowego przepisu, bo wszystko zależy od aplikacji?

Jak nie masz synchronized, albo ReentrantLock, to mniej użyjesz off heap. Za to klasy Atomic* nie komunikują się w ogóle z systemem i przez to nie zjadają offheap.
Także wersja java, ilość wątków na GC, czy sam algorytm GC, także ma znaczenie. Wielkość aplikacji, ilość klas, ilość synchronizacji, rodzaj GC, ilość wątków na gc,
  • Odpowiedz