Нет GC, когда приложение находится в режиме ожидания - PullRequest
0 голосов
/ 29 сентября 2018

У меня микросервис на основе пружинной загрузки.Это высокопроизводительный сервис чтения.Я заметил, что если я оставлю сервер включенным на более длительное время (несколько часов или день) без какой-либо нагрузки, пространство E1 Eden будет расти, и в этот период не будет происходить сборщик мусора.В результате, как только я начну отправлять трафик на сервер, GC начнет работать, и время GC будет больше, чем в целом (почти в два раза - с 240 до 480 мс).Это будет держать потоки в состоянии занятости в течение короткого периода времени и приведет к тайм-ауту запроса на стороне клиента.

Java version: 1.8.0_131
Current load: 450 TPS
GC: G1GC
Heap Parameter used:
-Xms4g
-Xmx4g
-XX:NewRatio=2
-XX:SurvivorRatio=8
-XX:TargetSurvivorRatio=90
-XX:+UseCompressedClassPointers
-XX:+UseCompressedOops
-XX:MetaspaceSize=640m
-XX:MaxMetaspaceSize=640m
-Xss512k
-XX:+UseG1GC

Вопросы: 1) Почему нет активности GC, покасервер находится в нерабочем состоянии?
2) Почему мы увеличиваем время GC на начальной стадии GC, которая приостанавливает все потоки на более длительный период?
3) Почему мы видим всплеск в пространстве выживших G1?

enter image description here

...