2013-12-13 6 views
6

Это длинное серверное приложение, которое создает много короткоживущих мусора и почти ничего не приживается после запуска. В большинстве случаев коллекция молодых людей идет быстро, даже с 10 гб быстро, так как это почти весь мусор, но мы наблюдаем случайные брутальные выбросы. В качестве потенциального намека мы запускаем аналогично настроенный сервер при более низкой нагрузке на машину с большим количеством ресурсов ЦП, но на 12 Гб меньше памяти. Мы не видим этого шаблона.Java HotSpot очень длинные молодые коллекции

Java -Xms20g -Xmx20g -Xloggc: "./ журналы/gc.log" -XX: + PrintGCDetails -XX: + PrintGCDateStamps -XX: NewRatio = 1 -XX: + DisableExplicitGC -XX: + UseSpinning - XX: PreBlockSpin = 1000 -XX: -UseCounterDecay -XX: + UseTLAB -XX: + TieredCompilation -XX: ReservedCodeCacheSize = 512m

Вот отрывок из журналов GC. Можно ли сказать, что он проводит полный рабочий день на самом деле, выполняя работу GC (вместо того, чтобы ждать, пока потоки достигнут safepoints, например), так как время sys также велико?

2013-12-13T14: 04: 50,388 + 0000: 56748,603: [GC [PSYoungGen: 10363808K-> 1248K (10421824K)] 10569323K-> 207003K (20907584K), 0.0035110 сек] [Времена: пользователь = 0.03 SYS = 0,00, реальные = 0,00 сек]

2013-12-13T14: 17: 32,245 + 0000: 57510.460: [GC [PSYoungGen: 10363808K-> 1600K (10435072K)] 10569563K-> 207563K (20920832K), 0.0038460 сек ] [Times: user = 0.04 sys = 0.00, real = 0.01 secs)

2013-12-13T14: 29: 08.572 + 0000: 58206.787: [GC [PSYoungGen: 10381824K-> 1408K (10430912K)] 10587787K-> 207875K (20916672K), 0,0045710 сек.] [Время: пользователь = 0,04 sys = 0,00, real = 0,01 с)

2013-12-13T14: 36: 25.176 + 0000: 58643.391: [GC [PSYoungGen: 10381632K-> 1600K (10442432K)] 10588099K-> 208371K (20928192K), 0.0040800 secs] [Times: user = 0.03 sys = 0.00 , реальные = 0,00 сек]

2013-12-13T14: 44: 04,409 + 0000: 59102.624: [GC [PSYoungGen: 10397120K-> 1600K (10438848K)] 10603891K-> 208715K (20924608K), 14.7387710 сек] [ Времена: пользователь = 0.00 SYS = 143,05, реальные = 14.74 сек]

2013-12-13T14: 52: 50,287 + 0000: 59628,502: [GC [PSYoungGen: 10397120K-> 11488K (10446720K)] 10604235K-> 218819K (20932480K), 0,0127280 секунд] [Times: user = 0.11 sys = 0.00, real = 0.01 secs]

2013-12-13T14: 59: 34.934 + 0000: 60033.149: [GC [PSYoungGen: 10418208K-> 1536K (10445760K)] 10625539K-> 218931K (20931520K), 211.1968100 secs] [Times: user = 0.00 sys = 2067.08 , реальные = 211.16 сек]

2013-12-13T15: 12: 04,478 + 0000: 60782.693: [GC [PSYoungGen: 10408256K-> 15136K (10448064K)] 10625651K-> 232723K (20933824K), 0.0147670 сек] [ Время: пользователь = 0,00 sys = 0,12, real = 0,01 сек.]

2013-12-13T15: 23: 02.123 + 0000: 61440.338: [GC [PSYoungGen: 10426912K-> 12672K (10448768K)] 10644499K-> 232635K (20934528K), 0,0141040 сек.] [Times: user = 0.00 sys = 0.12, real = 0,02 secs)

2013-12-13T15: 31: 09,119 + 0000: 61927.334: [GC [PSYoungGen: 10424448K-> 5280K (10452160K)] 10644411K-> 232907K (20937920K), 0,8134440 секунд] [Times: user = 1.22 sys = 6.30, real = 0,82 сек]

2013-12-13T15: 39: 25,083 + 0000: 62423.298: [GC [PSYoungGen: 10421024K-> 6208K (10449344K)] 10648651K-> 235547K (20935104K), 0.0087890 сек] [Времена: пользователь = 0,06 sys = 0,00, real = 0.01 сек]

2013-12-13T15: 47: 52,781 + 0000: 62930.996: [GC [PSYoungGen: 10421952K-> 7200K (10456960K)] 10651291K-> 239123K (20942720K), 0.0094460 сек] [Времена: пользователь = 0.08 SYS = 0.00, реальные = 0,01 сек]

2013-12-13T15: 58: 18,594 + 0000: 63556.809: [GC [PSYoungGen: 10433248K-> 6752K (10454848K)] 10665171K-> 242331K (20940608K), 0,0091570 secs] [Times: user = 0.08 sys = 0.00, real = 0.01 secs)

Характеристики на сервере выше - это два четырехъядерных X5570 с 48 ГБ оперативной памяти. HTOP показывает 15 ГБ, остальные кэшируются приложением с использованием чуть более 10 Гб в любое время (невысокий размер). Это заставляет меня думать, что это не проблема подкачки.

Другим сервером, на который я ссылаюсь, является двойной 8-ядерный E5-2690 с 32 ГБ оперативной памяти. Оба запускают jre 1.7.0_25 на Fedora, хотя сервер выше находится на очень старой версии

ответ

2

Такое высокое sys время необычно. Может ли быть помеха с некоторыми другими приложениями/действиями в вашей системе?

Я думаю, вы должны собрать также другие статистические системы - vmstat, netstat, iostat, mpstat, чтобы исключить любое вмешательство или время GC с деятельностью вашей системы. Сопоставьте с фазами YounGen, чтобы увидеть, есть ли всплески в течение этих длинных пауз YounGen.

+0

Серверы предназначены для этого приложения, вряд ли я думаю. Вы говорите о конкуренции процессора или что-то еще? Я никогда не видел большой нагрузки на эти ящики, я думаю, что это было бы слишком совпадением для того, чтобы это произошло из внешнего приложения во время GC ... – gbasin

+2

Время usr равно 0.00, поэтому он выглядит как его ожидание на системе ресурс, на самом деле не выполняющий работу GC ... –

+0

Вы также можете попробовать перейти на jdk7u40 и контролировать GC с помощью управления Mission? –

Смежные вопросы