Próbuję dostroić moją aplikację głównie w celu zmniejszenia "rozprzestrzeniania się" czasów odpowiedzi. Średnia jest dobra, ale zakres jest zbyt szeroki.Strojenie JVM dla wysokiej alokacji
Dynatrace wykazało, że wyższe czasy reakcji są związane z większą ilością czasu spędzanego w zawieszeniu. To wskazuje na GC.
Próbowałem zmienić niektóre wartości JVM GC na podstawie czytania w Internecie, do małego sukcesu.
Na podstawie logów GC uznałem, że współczynnik alokacji wynosi około 324 MB/s, a współczynnik promocji to tylko 0,85 MB/s. Wydaje mi się, że ma on bardzo wysoką stopę przydziałów, więc starałem się zwiększyć rozmiar Młodej Generacji.
Pierwszy zrzut ekranu zawiera domyślne ustawienia Java 8, 1024 MB Xmx.
Drugi zrzut ekranu to ustawienie NewRatio = 1.
Wszelkie sugestie dotyczące tego, co warto spróbować, będą naprawdę mile widziane.
Czego już próbowałem: zmiana na G1GC ustawienie NewRatio = 1, ustawienie NewRatio = 1 i rosnącą xmx 2048, ustawienie NewSize = 1600m i xmx = 2048, ustawienie MetaspaceSize = 100
EDIT: Dodawanie kłody GC http://pastebin.com/VhJwSuxv
Uwaga: Ścieżki te pochodzą z badania 10min ze zmianą: NewRatio = 1
* "W oparciu o dzienniki GC" *, opublikować je? – the8472
Dodano link do pastebin z logami GC. Zauważ, że są one ze zmianą: NewRatio = 1 – Bobby
Młode kolekcje zapewniają dość stałą przerwę 70-80ms. Stare kolekcje trwają dłużej, ale są rzadkie i należy się tego spodziewać, gdy używasz kolektora danych. Dlatego prawdopodobnie powinieneś bardziej szczegółowo przyjrzeć się środkom reagowania, aby zweryfikować, że są one faktycznie powiązane z GC. – the8472