forum.bitel.ru
http://forum.bitel.ru/

Сборщик мусора не освобождает память
http://forum.bitel.ru/viewtopic.php?f=5&t=7828
Страница 1 из 1

Автор:  cezar [ 12 мар 2013, 19:07 ]
Заголовок сообщения:  Сборщик мусора не освобождает память

Сегодня уже два раза пришел аларм на почту следующего вида:
Приложению недостаточно выделенной для него памяти!
Зарезервировано 1986592768 из 1986592768 (максимум) байтов памяти.
Сейчас свободно: 779894424 байтов.


сейчас
Код:
[root@vpn log]# ../radius_status.sh
version 5.1 build 361 from 18.01.2013 19:42:01
12.03.2013 22:56:26   4991   4977   14   0
Request accounts per minute start: 10; stop: 24; update: 4980
Request auths per minute accept: 10; reject: 26
Netfow packets per minute: 118800
Ignore per minute auth: 0; update: 0
Antispam ban count: 16; used per minute: 184
FlowListener: queue_size: 0; threads_active: 0; largest: 12; core: 12; pool_size: 12; recv_socket_buf_size: 131 071; recv_buf_size: 8 388 608; packets: 1339257021
Started: 28.02.2013 07:04:33   Uptime: 12 d 15:51:52
Memory total: 1 987 117 056; max: 1 987 117 056; free: 395 930 424
Memory pools:
Non-heap memory[Code Cache]: max: 50 331 648; used: 9 445 056; peek: 9 475 264
Heap memory[PS Eden Space]: max: 678 690 816; used: 286 582 128; peek: 694 550 528
Heap memory[PS Survivor Space]: max: 10 158 080; used: 8 913 016; peek: 31 752 480
Heap memory[PS Old Gen]: max: 1 398 145 024; used: 1 295 691 488; peek: 1 295 691 488
Non-heap memory[PS Perm Gen]: max: 88 080 384; used: 26 849 008; peek: 26 849 008
Thread count: 74
Trees in cache: 12
Connections pool to Master status Idle: 57; Active: 0; maxActive: 7000; maxIdle: 100


посмотрел историю сообщений вида радиус не успевает обрабатывать запросы, нашел закономерность, что параметр total все время увеличивается и никогда не уменьшается, вот прошло 12 дней после перезапуска радиуса, параметр total добрался до max.


конфиг радиуса

Код:

processor.class=ru.bitel.bgbilling.modules.dialup.radius.DialUpRadiusProcessor

processor.mid=1


auth.port=1812
acct.port=1813
admin.port=1955

acct.thread.queue=200
auth.thread.queue=1000
auth.thead.count=1000
acct.thead.count=1000

auth.thread.must.be.free.count=5
acct.thread.must.be.free.count=5

collector.capture.flow.port.1=2001

collector.capture.flow.port.1.type=netflow
#количество потоков для порта
collector.capture.flow.port.1.thread.count=12

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://********/bgbilling?useUnicode=true&characterEncoding=Cp1251&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&elideSetAutoCommits=true&cachePrepStmts=true&useCursorFetch=true

db.user=*****
db.pswd=*****

db.maxIdle=100
db.maxActive=7000
mq.url=failover:(nio://********:61616)
mq.user=***
mq.pswd=******

Автор:  Amir [ 12 мар 2013, 20:21 ]
Заголовок сообщения:  Re: Сборщик мусора не освобождает память

В 5.1 не совсем правильно определяется, что память заканчивается - там не учитывается, срабатывал ли сборщик мусора.
С 5.2 ругается, только если мало памяти уже после срабатывания сборщика. То что java не освобождает память при интенсивной работе - нормально: она видит что памяти еще хватает, система загружена, поэтому сборщик мусора не запускает.
Однако если память растет, и вызов radius.sh gc не снижает потребление памяти обратно на средний уровень - то уже скорее всего утечка, а если возникает OutOfMemory даже после увеличения максимума - значит точно утечка.

Автор:  cezar [ 13 мар 2013, 04:53 ]
Заголовок сообщения:  Re: Сборщик мусора не освобождает память

а что за команда radius.sh gc?

Автор:  Phricker [ 13 мар 2013, 11:05 ]
Заголовок сообщения:  Re: Сборщик мусора не освобождает память

судя по gc - это garbage collector

Автор:  aardvark [ 10 апр 2013, 02:55 ]
Заголовок сообщения:  Re: Сборщик мусора не освобождает память

включите логирование gc через -verbose:gc и будете видеть сколько и чего освободилось и когда.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/