Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Lineage II (https://forum.zone-game.info/forumdisplay.php?f=34)
-   -   Ахаха, GC, что ты делаешь, прекрати... (https://forum.zone-game.info/showthread.php?t=37239)

WoWan-SM 29.12.2014 23:01

Ахаха, GC, что ты делаешь, прекрати...
 
Имеются вот такие настройки
Код:

-Xms5120m
-Xmx5120m
-Xmn256m
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:MaxGCPauseMillis=300
-XX:+DoEscapeAnalysis
-XX:+UseBiasedLocking
-XX:+EliminateLocks
-XX:ParallelGCThreads=13
-XX:ParallelCMSThreads=4
-XX:+AggressiveOpts
-XX:SurvivorRatio=100
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=80
-XX:+CMSParallelRemarkEnabled
-XX:+CMSScavengeBeforeRemark
-XX:+CMSClassUnloadingEnabled
-XX:+UseCompressedOops
-XX:+UseFastAccessorMethods
-XX:+PrintGCDetails
-XX:+PrintGCCause
-XX:+PrintGCDateStamps
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCTimeStamps
-XX:+PrintTenuringDistribution
-XX:+PrintGC
-Xloggc:./log/game/garbage_collector.log

Но примерно 1к ботов появляющихся и удаляющихся (утечек памяти точно нет) унаследованных от класса Player(да-да, я маньяк и мне реально для всех целей бота нужен этот класс) заставляют сервак страдать уже буквально через 4 часа.
Агония происходит при полной сборкой мусора

Код:

Desired survivor size 1310720 bytes, new threshold 3 (max 15)
- age  1:    600136 bytes,    600136 total
- age  2:    592416 bytes,    1192552 total
- age  3:    357872 bytes,    1550424 total
: 259260K->2393K(259584K), 0,1870088 secs] 3356973K->3100471K(5240320K), 0,1871209 secs] [Times: user=0,21 sys=0,00, real=0,18 secs]
2014-12-29T18:58:06.506+0300: 53845,082: Total time for which application threads were stopped: 0,1874860 seconds
2014-12-29T18:58:07.827+0300: 53846,402: [GC (Allocation Failure) 53846,402: [ParNew
Desired survivor size 1310720 bytes, new threshold 3 (max 15)
- age  1:    880072 bytes,    880072 total
- age  2:    303408 bytes,    1183480 total
- age  3:    324760 bytes,    1508240 total
: 259416K->2060K(259584K), 0,1947399 secs] 3357494K->3100477K(5240320K), 0,1948550 secs] [Times: user=0,21 sys=0,00, real=0,20 secs]
2014-12-29T18:58:08.022+0300: 53846,597: Total time for which application threads were stopped: 0,1951924 seconds
2014-12-29T18:58:09.231+0300: 53847,806: [GC (Allocation Failure) 53847,807: [ParNew
Desired survivor size 1310720 bytes, new threshold 3 (max 15)
- age  1:    858184 bytes,    858184 total
- age  2:    304752 bytes,    1162936 total
- age  3:    297616 bytes,    1460552 total
: 259076K->2168K(259584K), 0,0975083 secs] 3357493K->3100893K(5240320K), 0,0976299 secs] [Times: user=0,12 sys=0,00, real=0,10 secs]
2014-12-29T18:58:09.329+0300: 53847,904: Total time for which application threads were stopped: 0,0980114 seconds
2014-12-29T18:58:10.608+0300: 53849,183: [GC (Allocation Failure) 53849,184: [ParNew
Desired survivor size 1310720 bytes, new threshold 3 (max 15)
- age  1:    597328 bytes,    597328 total
- age  2:    532640 bytes,    1129968 total
- age  3:    298856 bytes,    1428824 total
: 259141K->1829K(259584K), 0,0752935 secs] 3357866K->3100841K(5240320K), 0,0754313 secs] [Times: user=0,14 sys=0,00, real=0,07 secs]
2014-12-29T18:58:10.684+0300: 53849,259: Total time for which application threads were stopped: 0,0757869 seconds
2014-12-29T18:58:11.921+0300: 53850,496: [GC (Allocation Failure) 53850,496: [ParNew
Desired survivor size 1310720 bytes, new threshold 3 (max 15)
- age  1:    847992 bytes,    847992 total
- age  2:    262648 bytes,    1110640 total
- age  3:    269344 bytes,    1379984 total
: 258852K->1691K(259584K), 0,1034302 secs] 3357864K->3100990K(5240320K), 0,1035724 secs] [Times: user=0,26 sys=0,00, real=0,10 secs]
2014-12-29T18:58:12.025+0300: 53850,600: Total time for which application threads were stopped: 0,1039725 seconds
2014-12-29T18:58:13.199+0300: 53851,775: [GC (Allocation Failure) 53851,775: [ParNew
Desired survivor size 1310720 bytes, new threshold 3 (max 15)
- age  1:    616120 bytes,    616120 total
- age  2:    501000 bytes,    1117120 total
- age  3:    256448 bytes,    1373568 total
: 258706K->1895K(259584K), 0,1982002 secs] 3358006K->3101448K(5240320K), 0,1983414 secs] [Times: user=0,16 sys=0,00, real=0,20 secs]
2014-12-29T18:58:13.398+0300: 53851,973: Total time for which application threads were stopped: 0,2072278 seconds
2014-12-29T18:58:14.355+0300: 53852,930: [GC (Allocation Failure) 53852,931: [ParNew
Desired survivor size 1310720 bytes, new threshold 3 (max 15)
- age  1:    860992 bytes,    860992 total
- age  2:    258440 bytes,    1119432 total
- age  3:    233856 bytes,    1353288 total
: 258856K->1668K(259584K), 0,2144986 secs] 3358409K->3101467K(5240320K), 0,2146301 secs] [Times: user=0,13 sys=0,00, real=0,22 secs]
2014-12-29T18:58:14.570+0300: 53853,145: Total time for which application threads were stopped: 0,2151597 seconds
2014-12-29T18:58:15.344+0300: 53853,919: [GC (Allocation Failure) 53853,920: [ParNew
Desired survivor size 1310720 bytes, new threshold 15 (max 15)
- age  1:    558792 bytes,    558792 total
- age  2:    233848 bytes,    792640 total
- age  3:    255952 bytes,    1048592 total
: 57128K->1528K(259584K), 0,0708097 secs]53853,990: [CMS: 3716032K->3172168K(4980736K), 11,0408599 secs] 3772962K->3172168K(5240320K), [Metaspace: 50011K->50011K(1093632K)], 11,1129720 secs] [Times: user=9,82 sys=0,00, real=11,12 secs]
2014-12-29T18:58:26.457+0300: 53865,033: Total time for which application threads were stopped: 11,2187234 seconds
2014-12-29T18:58:26.810+0300: 53865,386: [GC (Allocation Failure) 53865,386: [ParNew
Desired survivor size 1310720 bytes, new threshold 15 (max 15)
- age  1:      54696 bytes,      54696 total
: 3229K->413K(259584K), 0,5019797 secs]53865,888: [CMS: 4404238K->4403483K(4980736K), 15,2511868 secs] 4407468K->4403483K(5240320K), [Metaspace: 50011K->50011K(1093632K)], 15,7537355 secs] [Times: user=13,25 sys=0,00, real=15,75 secs]
2014-12-29T18:58:42.564+0300: 53881,140: [Full GC (Allocation Failure) 53881,140: [CMS: 4403483K->4403402K(4980736K), 14,1391152 secs] 4403483K->4403402K(5240320K), [Metaspace: 50011K->50011K(1093632K)], 14,1395414 secs] [Times: user=11,52 sys=0,00, real=14,14 secs]
2014-12-29T18:58:56.704+0300: 53895,279: Total time for which application threads were stopped: 30,2033612 seconds
2014-12-29T18:58:57.212+0300: 53895,788: [GC (Allocation Failure) 53895,788: [ParNew
Desired survivor size 1310720 bytes, new threshold 15 (max 15)
- age  1:    370496 bytes,    370496 total
: 4737K->474K(259584K), 0,5612733 secs]53896,349: [CMS: 4403402K->3171246K(4980736K), 12,7653530 secs] 4408140K->3171246K(5240320K), [Metaspace: 49909K->49909K(1093632K)], 13,3286822 secs] [Times: user=11,83 sys=0,00, real=13,33 secs]
2014-12-29T18:59:10.541+0300: 53909,117: Total time for which application threads were stopped: 13,8249042 seconds
2014-12-29T18:59:10.714+0300: 53909,289: [GC (Allocation Failure) 53909,290: [ParNew
Desired survivor size 1310720 bytes, new threshold 15 (max 15)
- age  1:    532952 bytes,    532952 total
: 17933K->569K(259584K), 0,0773867 secs]53909,367: [CMS: 4403315K->4403455K(4980736K), 11,6908664 secs] 4421249K->4403455K(5240320K), [Metaspace: 49909K->49909K(1093632K)], 11,7686491 secs] [Times: user=10,46 sys=0,00, real=11,77 secs]
2014-12-29T18:59:22.483+0300: 53921,058: [Full GC (Allocation Failure) 53921,058: [CMS: 4403455K->4403455K(4980736K), 13,7432180 secs] 4403455K->4403455K(5240320K), [Metaspace: 49909K->49909K(1093632K)], 13,7435026 secs] [Times: user=10,47 sys=0,00, real=13,74 secs]
2014-12-29T18:59:36.226+0300: 53934,802: Total time for which application threads were stopped: 25,6601429 seconds
2014-12-29T18:59:36.230+0300: 53934,805: [GC (Allocation Failure) 53934,805: [ParNew
Desired survivor size 1310720 bytes, new threshold 15 (max 15)
- age  1:      91088 bytes,      91088 total
: 4360K->161K(259584K), 0,0376395 secs]53934,843: [CMS: 4403455K->4403479K(4980736K), 12,9210055 secs] 4407816K->4403479K(5240320K), [Metaspace: 49909K->49909K(1093632K)], 12,9589878 secs] [Times: user=11,83 sys=0,00, real=12,96 secs]
2014-12-29T18:59:49.189+0300: 53947,765: [Full GC (Allocation Failure) 53947,765: [CMS: 4403479K->4403479K(4980736K), 10,2861247 secs] 4403479K->4403479K(5240320K), [Metaspace: 49909K->49909K(1093632K)], 10,2865027 secs] [Times: user=9,01 sys=0,00, real=10,28 secs]
2014-12-29T18:59:59.476+0300: 53958,051: Total time for which application threads were stopped: 23,2460207 seconds
2014-12-29T18:59:59.803+0300: 53958,378: [GC (CMS Initial Mark) [1 CMS-initial-mark: 4403479K(4980736K)] 4421432K(5240320K), 0,0416402 secs] [Times: user=0,08 sys=0,00, real=0,04 secs]
2014-12-29T18:59:59.845+0300: 53958,420: Total time for which application threads were stopped: 0,3290768 seconds
2014-12-29T18:59:59.845+0300: 53958,420: [CMS-concurrent-mark-start]
2014-12-29T19:00:00.021+0300: 53958,597: Total time for which application threads were stopped: 0,0011359 seconds

Подскажите как можно уменьшить время полной сборки мусора?

P.S. Всем добра и бобра на воротник в наступающем новом году

Donatte 29.12.2014 23:36

Re: Ахаха, GC, что ты делаешь, прекрати...
 
Тоже интересовался данной проблемой, а именно временем жизни объекта после выполнения метода. Всё к чему пришёл, так это что 99% программистов на Java похожи на свиней которые срут под себя. Да, привычка с PHP хороша - все созданные объекты испаряются после завершения выполнения кода, но в java есть много способов одинаково бесполезных. Всё что более-менее подходящее для предотвращения свалок, так это подчищать крупные объекты сразу.

http://www.quizful.net/question/uZVyaTszV2oV - Тут как бы уже тема поднималась.
http://habrahabr.ru/post/183344/ - а вот тут обоснована ущербность Фрозенов.

Присоединяюсь к автору. Тоже интересно.

WoWan-SM 30.12.2014 00:05

Re: Ахаха, GC, что ты делаешь, прекрати...
 
Цитата:

Сообщение от Donatte (Сообщение 382267)
Тоже интересовался данной проблемой, а именно временем жизни объекта после выполнения метода. Всё к чему пришёл, так это что 99% программистов на Java похожи на свиней которые срут под себя. Да, привычка с PHP хороша - все созданные объекты испаряются после завершения выполнения кода, но в java есть много способов одинаково бесполезных. Всё что более-менее подходящее для предотвращения свалок, так это подчищать крупные объекты сразу.

http://www.quizful.net/question/uZVyaTszV2oV - Тут как бы уже тема поднималась.
http://habrahabr.ru/post/183344/ - а вот тут обоснована ущербность Фрозенов.

Присоединяюсь к автору. Тоже интересно.

Ну очень плохой способ, т.к. мы не можем точно знать осталась ли ссылка на тот или иной объект или нет, и заполнять всю сборку finalize тоже не дело.

Но за то ты упомянув про "крупные" объекты подкинул идею разбить класс Player на составные класcы.

Но все же хотелось бы максимум выжать из возможностей GC

Donatte 30.12.2014 00:08

Re: Ахаха, GC, что ты делаешь, прекрати...
 
Цитата:

Сообщение от WoWan-SM (Сообщение 382274)
Ну очень плохой способ, т.к. мы не можем точно знать осталась ли ссылка на тот или иной объект или нет, и заполнять всю сборку finalize тоже не дело.

Но за то ты упомянув про "крупные" объекты подкинул идею разбить класс Player на составные класcы.

Цитата:

У Джошуа Блоха хорошо написано об этом методе:
Краткая выдержка:
1. finalize() можно использовать только в двух случаях:
1.1. Проверка/подчистка ресурсов с логированием
1.2. При работе с нативным кодом, который не критичен к утечке ресурсов
2. finalize() замедляет работу GC по очистке объекта в 430 раз
3. finalize() может быть не вызван
Я как раз finallize не считаю хорошим примером.

А что вам мешает вызывать чистильщик, как это предлагают на некоторых ресурсах System.gc(); ?

WoWan-SM 30.12.2014 00:10

Re: Ахаха, GC, что ты делаешь, прекрати...
 
Как видишь я тоже :)
http://savepic.ru/6458032.png

JavaMan 30.12.2014 00:19

Re: Ахаха, GC, что ты делаешь, прекрати...
 
Зачем вся эта куча настроек вмки ? В явке 8 по дефолту стоит g1 гц, который уделывает все остальные гц явки.

А вообще надо смотреть в профайлере что именно так пожирает память и устранять причину. Всё остальное является тупым гаданием. Мы ведь даже не знаем что у вас находится в классе Player.

SouthBridge 30.12.2014 00:26

Re: Ахаха, GC, что ты делаешь, прекрати...
 
Это немного не в кассу, но.. я полагаю что у Вас минимум Java 7, если не 8. Не пора ли перейти на G1 и отказаться от этих старых ужасов с настройкой сборщиков разных поколений?

p.s Алсо, на мой взгляд маловат размер Survivor областей что установлен как 1:100 при Eden'е в 256. Если мусора генерится много, то в таких условиях объекты может сразу отправлять на долгое хранение в Tenured.

UPD:
Чуть опоздал, GabberBaby уже описал всю суть. +1.

WoWan-SM 30.12.2014 00:58

Re: Ахаха, GC, что ты делаешь, прекрати...
 
Цитата:

Сообщение от GabberBaby (Сообщение 382277)
Зачем вся эта куча настроек вмки ? В явке 8 по дефолту стоит g1 гц, который уделывает все остальные гц явки.

А вообще надо смотреть в профайлере что именно так пожирает память и устранять причину. Всё остальное является тупым гаданием. Мы ведь даже не знаем что у вас находится в классе Player.

Цитата:

Сообщение от SouthBridge (Сообщение 382278)
Это немного не в кассу, но.. я полагаю что у Вас минимум Java 7, если не 8. Не пора ли перейти на G1 и отказаться от этих старых ужасов с настройкой сборщиков разных поколений?

p.s Алсо, на мой взгляд маловат размер Survivor областей что установлен как 1:100 при Eden'е в 256. Если мусора генерится много, то в таких условиях объекты может сразу отправлять на долгое хранение в Tenured.

UPD:
Чуть опоздал, GabberBaby уже описал всю суть. +1.

Перевести сборку перевел с 7 на 8, но настройки оставил.
Не в курсе был что у них сменился сборщик мусора.
Почитаю про него, спс.
Пока отключил все эти настройки и жду первого заполнения Eden space, чтобы посмотреть на предварительные результаты, а то ранее на этом месте тоже прилично времени подъедало.

Добавлено через 4 минуты
Пока полет нормальный:
Код:

2014-12-30T00:58:38.915+0300: 890,675: [GC (Allocation Failure)
Desired survivor size 477102080 bytes, new threshold 5 (max 15)
[PSYoungGen: 1223153K->174576K(640512K)] 2895015K->1860132K(3437056K), 0,2583829 secs] [Times: user=0,81 sys=0,00, real=0,26 secs]

Ждем Full GC...

Добавлено через 41 минуту
G1 автоматически уменьшает максимальный размер кучи? о_О
http://i.gyazo.com/86f08cf6f6c4594a726dbe3bedd514c7.png

n3k0nation 30.12.2014 02:24

Re: Ахаха, GC, что ты делаешь, прекрати...
 
Не максимальный размер кучи (она остается неизменной и ее изменить в рантайме нельзя), а забуференную память возвращает ОС.
Чисто мое мнение - гонять память от ОС к ЖВМ - плохо и медленно. Лучше бы она дальше оставалась в буферах.

GenCloud 30.12.2014 10:19

Re: Ахаха, GC, что ты делаешь, прекрати...
 


Текущее время: 02:40. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot