Prowadzimy wiele serwerów Tomcat i obserwujemy pełne zbiory śmieci (GC) są często wykonywane co godzinę, szczególnie gdy wykorzystanie pamięci jest stosunkowo niskie. Dokładny czas wydaje się być związany z czasem uruchomienia serwera aplikacji; jeśli serwer zostanie uruchomiony o godzinie 01:13, pełny GC zostanie wykonany o 02:13, a następny pełny GC nastąpi o 03:13. Nie udało mi się znaleźć żadnej dokumentacji wyjaśniającej to zachowanie.Dlaczego JVM tych serwerów Tomcat wykonuje pełną godzinę GC?
Jest to problem, ponieważ pula serwerów uruchomiona jednocześnie wszystkie mają tendencję do wykonywania pełnej wartości GC w tym samym czasie. Jeśli opóźnienie GC jest wystarczająco długie, aby spowodować równoważenie obciążenia, aby oznaczyć serwer jako wyłączony, cała aplikacja może przejść w tryb offline na pewien czas. Byłoby lepiej, gdyby pełne GC mogły być dystrybuowane przez pewien czas, więc żadne dwa serwery nie wykonują pełnego GC w tym samym czasie, ale nie mogę znaleźć sposobu kontrolowania tego zachowania.
Czy ktoś inny widział to zachowanie? Czy istnieje jakiś sposób wpływania na te "normalne" pełne GC?
Czy masz proces, który przebiega zgodnie z harmonogramem (przez kwarc, et al.), Które mogą wypełnić w górę sterty na bieżąco? –