JVM internals - what does the JVM do? — Ian Rogers
-
- Уже с Приветом
- Posts: 13684
- Joined: 16 Jan 2001 10:01
Re: JVM internals - what does the JVM do? — Ian Rogers
Не знаю как там у Павла, но по моим наблюдениям нагруженная система часто реагирует на "толчки" извне (типа резкого, пусть даже кратковременного замедления) достаточно ошутимо: некоторые запросы замедляются на десятки секунд, даже если толчёк длился менее секунды.
Впрочем - таких толчков в нашей системе слишком много чтобы достоверно говорить о корелляции.
Кстати - 4 секунды это одно из самых больших наблюдаемых full GC time. иногда и за 150ms управляется. Думаю если ужать размер кучи, можно достигнуть ещё большей гладкости. Однако стрёмно: ежели толчёк будет сильный (не GC, а например downstream systems slow down) - есть риск нарваться на OOM и прочие ужосы.
Впрочем - таких толчков в нашей системе слишком много чтобы достоверно говорить о корелляции.
Кстати - 4 секунды это одно из самых больших наблюдаемых full GC time. иногда и за 150ms управляется. Думаю если ужать размер кучи, можно достигнуть ещё большей гладкости. Однако стрёмно: ежели толчёк будет сильный (не GC, а например downstream systems slow down) - есть риск нарваться на OOM и прочие ужосы.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Извините заработалсяPalych wrote:Не знаю как там у Павла
Это какая то неправильная ситуация, наверное можно что-то пофиксить., но по моим наблюдениям нагруженная система часто реагирует на "толчки" извне (типа резкого, пусть даже кратковременного замедления) достаточно ошутимо: некоторые запросы замедляются на десятки секунд, даже если толчёк длился менее секунды.
In vino Veritas!
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
вот типичная запись из лога:
Code: Select all
[Full GC
INFO | jvm 2 | 2012/07/20 13:38:45 | 2073454K->1544062K(6239040K), 6.0521510 secs]
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
обычный GC занимает обычно менее 0.1с, делается раз в минуту.
Full GC делается раз в час, видимо по расписанию.
Full GC делается раз в час, видимо по расписанию.
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Ну и непонятно на сколько на самом деле оно останавливает мир, может на 0.01с, а все остальное время апликуха спокойно работает, только с загруженым процессором.Flash-04 wrote:вот типичная запись из лога:Code: Select all
[Full GC INFO | jvm 2 | 2012/07/20 13:38:45 | 2073454K->1544062K(6239040K), 6.0521510 secs]
In vino Veritas!
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Мне кажется не по рассписанию, а когда обычного не хватает что бы освободить достаточно памятиFlash-04 wrote: Full GC делается раз в час, видимо по расписанию.
In vino Veritas!
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
из логов это непонятно, но! обычно в этом логе каждую секунду что-то пишется (там дофига статистики), а в эти 6 секунд ничего между в этом промежутке не появилось. почему?
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
А у вас какой GC? CMS?Flash-04 wrote:из логов это непонятно, но! обычно в этом логе каждую секунду что-то пишется (там дофига статистики), а в эти 6 секунд ничего между в этом промежутке не появилось. почему?
In vino Veritas!
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
нет! когда памяти не хватает, там появляются совсем другие записи, типа "memory allocation in red zone" тогда full GC может инициироваться каждые несколько минут, пока либо память не осободится, либо апликуха не помрет от истощенияcrypto5 wrote:Мне кажется не по рассписанию, а когда обычного не хватает что бы освободить достаточно памяти
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
скажу если расскажите как это понятьcrypto5 wrote:А у вас какой GC? CMS?
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
расписания конечно нет, но есть настройки которые сильно влияют на то как сборщик работает, в том числе как часто запускается. разумеется надо настраивать под обстоятельства.
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
видимо приложение само его инициирует:rzen wrote:расписания конечно нет
Code: Select all
INFO | jvm 2 | 2012/07/20 03:37:35 | [Full GC
INFO | jvm 2 | 2012/07/20 04:37:41 | [Full GC
INFO | jvm 2 | 2012/07/20 05:37:48 | [Full GC
INFO | jvm 2 | 2012/07/20 06:37:54 | [Full GC
INFO | jvm 2 | 2012/07/20 07:38:00 | [Full GC
INFO | jvm 2 | 2012/07/20 08:38:06 | [Full GC
INFO | jvm 2 | 2012/07/20 09:38:13 | [Full GC
INFO | jvm 2 | 2012/07/20 10:38:19 | [Full GC
INFO | jvm 2 | 2012/07/20 11:38:26 | [Full GC
INFO | jvm 2 | 2012/07/20 12:38:32 | [Full GC
INFO | jvm 2 | 2012/07/20 13:38:38 | [Full GC
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 13684
- Joined: 16 Jan 2001 10:01
Re: JVM internals - what does the JVM do? — Ian Rogers
Кстати, я вроде бы видел свидетельства того, что хотя бы что-то таки продолжает работать во время full GC. Но возможно это были погрешности измерений...crypto5 wrote:Ну и непонятно на сколько на самом деле оно останавливает мир, может на 0.01с, а все остальное время апликуха спокойно работает, только с загруженым процессором.Flash-04 wrote:вот типичная запись из лога:Code: Select all
[Full GC INFO | jvm 2 | 2012/07/20 13:38:45 | 2073454K->1544062K(6239040K), 6.0521510 secs]
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Concurrent Mark & Sweep -XX:+UseConcMarkSweepGCFlash-04 wrote:скажу если расскажите как это понятьcrypto5 wrote:А у вас какой GC? CMS?
In vino Veritas!
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
вот такое нашел, видимо всё же живет:
Code: Select all
INFO | jvm 2 | 2012/07/20 03:37:35 | [Full GC
INFO | jvm 2 | 2012/07/20 03:37:37 | [Unloading class sun.reflect.GeneratedMethodAccessor813]
INFO | jvm 2 | 2012/07/20 03:37:37 | [Unloading class sun.reflect.GeneratedMethodAccessor814]
INFO | jvm 2 | 2012/07/20 03:37:40 | 2005079K->1531110K(6239040K), 5.9037160 secs]
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
приложение может взвести флаг, который JVM может обслужить а может и нетFlash-04 wrote:видимо приложение само его инициирует:rzen wrote:расписания конечно нетCode: Select all
INFO | jvm 2 | 2012/07/20 03:37:35 | [Full GC INFO | jvm 2 | 2012/07/20 04:37:41 | [Full GC INFO | jvm 2 | 2012/07/20 05:37:48 | [Full GC INFO | jvm 2 | 2012/07/20 06:37:54 | [Full GC INFO | jvm 2 | 2012/07/20 07:38:00 | [Full GC INFO | jvm 2 | 2012/07/20 08:38:06 | [Full GC INFO | jvm 2 | 2012/07/20 09:38:13 | [Full GC INFO | jvm 2 | 2012/07/20 10:38:19 | [Full GC INFO | jvm 2 | 2012/07/20 11:38:26 | [Full GC INFO | jvm 2 | 2012/07/20 12:38:32 | [Full GC INFO | jvm 2 | 2012/07/20 13:38:38 | [Full GC
обратите внимание на выделенное слово.http://docs.oracle.com/javase/6/docs/ap ... em.html#gc()
Runs the garbage collector.
Calling the gc method suggests that the Java Virtual Machine expend effort toward recycling unused objects in order to make the memory they currently occupy available for quick reuse. When control returns from the method call, the Java Virtual Machine has made a best effort to reclaim space from all discarded objects.
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
это принудительно надо включать? в настройках JVM такого ключа не вижу.crypto5 wrote:Concurrent Mark & Sweep -XX:+UseConcMarkSweepGC
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
обратил. в реальности похоже что работает такой запрос.rzen wrote:обратите внимание на выделенное слово.
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
угу. обычно да, но даёт осечку в самое неудобное время
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Вроде да. Насколько я понимаю сайд эфект может быть в том что этот товарищ будет захватывать все ядра, а обычный только одно, зато stop the world паузы должны быть значительно короче.Flash-04 wrote:это принудительно надо включать? в настройках JVM такого ключа не вижу.crypto5 wrote:Concurrent Mark & Sweep -XX:+UseConcMarkSweepGC
In vino Veritas!
-
- Уже с Приветом
- Posts: 13684
- Joined: 16 Jan 2001 10:01
Re: JVM internals - what does the JVM do? — Ian Rogers
Действительно, при определённых full gc случается каждый час. Честно говоря, не уверен от чего это зависит - он настроек или от наргузки...crypto5 wrote:Мне кажется не по рассписанию, а когда обычного не хватает что бы освободить достаточно памятиFlash-04 wrote: Full GC делается раз в час, видимо по расписанию.
-
- Уже с Приветом
- Posts: 13684
- Joined: 16 Jan 2001 10:01
Re: JVM internals - what does the JVM do? — Ian Rogers
Code: Select all
-server \
-Xmx2g \
-Xms2g \
-Xnoclassgc \
-XX:PermSize=300m \
-XX:MaxPermSize=300m \
-XX:NewSize=800m \
-XX:MaxNewSize=800m \
-XX:+DisableExplicitGC \
-XX:+UseParNewGC \
-XX:+CMSParallelRemarkEnabled \
-XX:+UseConcMarkSweepGC \
-XX:-UseBiasedLocking \
-XX:LargePageSizeInBytes=256m \
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
Re: JVM internals - what does the JVM do? — Ian Rogers
GC случается, когда почти вся память использована ! Minor в случае young generation и major - когда tenured generation истощилась. Давал жеж ужеж линк на неплохую статью на эту тему: http://www.oracle.com/technetwork/java/ ... 40523.html Посмотрите, может найдете как вашу беду побороть.Palych wrote:Действительно, при определённых full gc случается каждый час. Честно говоря, не уверен от чего это зависит - он настроек или от наргузки...crypto5 wrote:Мне кажется не по рассписанию, а когда обычного не хватает что бы освободить достаточно памятиFlash-04 wrote: Full GC делается раз в час, видимо по расписанию.
У вас освобождается всего 25% от используемого (2,073,454K->1,544,062K) Может подсыпать немного памяти tenured generation?
Еще можно попросить jvm выдавать доп инфу о gc: -XX:+PrintGCDetails
Еще наверное стоит попросить jvm игнорировать System.gc() и потестить: -XX:+DisableExplicitGC
-
- Уже с Приветом
- Posts: 13684
- Joined: 16 Jan 2001 10:01
Re: JVM internals - what does the JVM do? — Ian Rogers
Отнюдь.Montchik wrote: GC случается, когда почти вся память использована !
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
именно. собссно вся суть эргономики в том, чтобы найти подмножество объектов которые можно освободить поскорее, не дожидаясь ООМ. гипотеза (эвристика) что молодые объекты с большОй вероятностью долго не живут себя отлично оправдала.Palych wrote:Отнюдь.Montchik wrote: GC случается, когда почти вся память использована !
Don't code today what you can't debug tomorrow.