Я запускаю java-приложение с включенным G1GC и печатаю журналы gc, как показано ниже:
[4074.182s][info][gc] GC(1017) Pause Young (Normal) (G1 Evacuation Pause) 6869M->6115M(16384M) 7430.860ms
[4082.328s][info][gc] GC(1018) Pause Young (Normal) (G1 Evacuation Pause) 6875M->6121M(16384M) 7058.485ms
[4089.592s][info][gc] GC(1019) Pause Young (Normal) (G1 Evacuation Pause) 6881M->6126M(16384M) 6172.693ms
[4105.799s][info][gc] GC(1021) Pause Young (Normal) (G1 Evacuation Pause) 6892M->6137M(16384M) 6845.922ms
[4114.418s][info][gc] GC(1022) Pause Young (Normal) (G1 Evacuation Pause) 6897M->6142M(16384M) 7563.613ms
[4122.805s][info][gc] GC(1023) Pause Young (Normal) (G1 Evacuation Pause) 6902M->6148M(16384M) 7326.923ms
[4131.270s][info][gc] GC(1024) Pause Young (Normal) (G1 Evacuation Pause) 6908M->6155M(16384M) 7402.222ms
[4140.574s][info][gc] GC(1025) Pause Young (Normal) (G1 Evacuation Pause) 6915M->6161M(16384M) 8226.283ms
[4149.429s][info][gc] GC(1026) Pause Young (Normal) (G1 Evacuation Pause) 6921M->6167M(16384M) 7779.282ms
[4157.078s][info][gc] GC(1027) Pause Young (Normal) (G1 Evacuation Pause) 6927M->6172M(16384M) 6559.166ms
Мое понимание этого журнала:
[4074.182s][info][gc] GC(1017) Pause Young (Normal) (G1 Evacuation Pause) 6869M->6115M(16384M) 7430.860ms
As per my understanding this shows that 4074.182 seconds after application started, a young generation
Stop the world gc was kicked in, and heap size before gc heap size was 6869M
and after gc it reduced to 6115M and it took 7430.860ms (more than 7 seconds).
Мои вопросы:
1. Is this young gc stopping all the application threads ?
2. If it is stopping all the application threads then looks like application is not
running at all during all these gc logs were printed because:
after [4074.182s] young gc kicked in and it took aroung 7.5 seconds (7430.860ms)
after ~8 seconds, [4082.328s] yound gc kicked in again and took around 7 seonds and so on.
So it looks like application is not getting any free slot here to run ?
без логов в режиме отладки, кстати, на это невозможно ответить...
У меня нет журналов с того момента времени, но я посмотрю, смогу ли я вставить сюда самые последние и подробные журналы gc.
@Eugene На данный момент у меня нет соответствующих журналов, которые показывали бы подобное поведение, и ваш первый комментарий как бы отвечает на вопросы, которые я разместил в этом посте. Пожалуйста, опубликуйте его, и я отмечу его ответом.
Да, ваше приложение остановлено, все потоки на этот период приостановлены. Интересно, что GC смог вернуть только около 700MB
примерно за 6-7 секунд, что абсолютно ужасно. Без отладочных сообщений невозможно сказать, почему это происходит, может быть, на машине были запущены потоки, может быть слишком много соединений между регионами и поэтому сканирование запомненных наборов заняло много времени, или еще какая-то причина.
Но суть в том, что во время этих циклов ваше приложение работает ужасно плохо; Вы получили это право.
в целом вы правы, ваше приложение плохо работает в те времена. Вы можете включить отладку и показать вывод журналов GC?