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

[BGInetAccounting] Недостаток памяти системы
http://forum.bitel.ru/viewtopic.php?f=44&t=8883
Страница 1 из 1

Автор:  barguzin2 [ 27 янв 2014, 13:34 ]
Заголовок сообщения:  [BGInetAccounting] Недостаток памяти системы

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


Чего он такой прожорливый ? Активных абонентов штук 650, всего пока перенесено порядка 1200. Есть РРРоЕ, DHCP, Netflow (мегабит 200). А если ему еще пару тыщ абонентов и 500-700Мбит потока добавить что с ним станет ?

Автор:  stark [ 27 янв 2014, 17:01 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

версия?

Автор:  barguzin2 [ 27 янв 2014, 17:41 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

Код:
Сервер: вер. 6.0 сборка 1659 от 22.01.2014 02:22:29

Причём после обновления последнего (до этого была ноябрьская сборка) еще больше стал памяти кушать.

Автор:  Amir [ 27 янв 2014, 18:33 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

После перезапуска (когда по логам начал принимать RADIUS/Netflow пакеты) сразу столько памяти использует или через какое-то время увеличивается?
Если не сразу, желательно два дампа пямяти сделать, сразу как начнет принимать RADIUS/Netflow после перезапуска и когда увеличится больше чем на 200M или даже в два раза, но желательно чтобы не больше 800-1000M.
jmap -dump:format=b,file=dump.hprof <pid>

Автор:  barguzin2 [ 27 янв 2014, 19:06 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

Это при запуске
Код:
Started: 27.01.2014 21:45:52    Uptime: 0 d 00:00:35
Memory total: 404 684 800; max: 1 908 932 608; free: 152 360 128
Memory pools:
  Non-heap memory[Code Cache]: max: 50 331 648; used: 4 182 464; peek: 4 193 280
  Heap memory[PS Eden Space]: max: 707 461 120; used: 172 731 520; peek: 678 494 208
  Heap memory[PS Survivor Space]: max: 1 245 184; used: 1 183 744; peek: 11 419 792
  Heap memory[PS Old Gen]: max: 1 431 699 456; used: 78 409 408; peek: 78 409 408
  Non-heap memory[PS Perm Gen]: max: 85 983 232; used: 34 335 976; peek: 34 335 976


Это чуть позже.
Код:
Started: 27.01.2014 21:45:52    Uptime: 0 d 00:02:03
Memory total: 808 058 880; max: 1 908 932 608; free: 329 717 672
Memory pools:
  Non-heap memory[Code Cache]: max: 50 331 648; used: 4 943 424; peek: 4 953 472
  Heap memory[PS Eden Space]: max: 544 210 944; used: 54 240 120; peek: 678 494 208
  Heap memory[PS Survivor Space]: max: 98 762 752; used: 98 735 968; peek: 98 735 968
  Heap memory[PS Old Gen]: max: 1 431 699 456; used: 325 365 120; peek: 325 365 120
  Non-heap memory[PS Perm Gen]: max: 85 983 232; used: 34 756 840; peek: 34 756 840

Автор:  Amir [ 27 янв 2014, 20:21 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

Большая часть занятого во втором случае, как-будто, это еще не собранный gc мусор.
Есть вероятность, что просто java редко запускает gc. Будет видно, если запустить accounting.sh gc.
Если free станет много, т.е. total-free станет примерно также как total-free после запуске, то дело в этом.
Если все равно увеличивается - возможно дело в утечке.

Автор:  barguzin2 [ 27 янв 2014, 20:36 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

сделал accounting.sh gc - метров 40 перебежало во free и вот что имеем.

Код:
Started: 27.01.2014 21:45:52    Uptime: 0 d 01:42:20
Memory total: 1 023 672 320; max: 1 908 932 608; free: 278 641 616
Memory pools:
  Non-heap memory[Code Cache]: max: 50 331 648; used: 7 044 544; peek: 7 053 440
  Heap memory[PS Eden Space]: max: 699 465 728; used: 14 809 640; peek: 678 494 208
  Heap memory[PS Survivor Space]: max: 7 864 320; used: 458 752; peek: 238 499 968
  Heap memory[PS Old Gen]: max: 1 431 699 456; used: 729 772 056; peek: 1 336 813 392
  Non-heap memory[PS Perm Gen]: max: 85 983 232; used: 34 884 224; peek: 35 096 024


Снял еще один дамп - может тут чего-то видно уже будет.

Автор:  Amir [ 28 янв 2014, 19:30 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

Сколько устройств в дереве примерно? 1, 10, 100, 500?
Все они являются NAS'ами (которые шлют RADIUS-пакеты)?

У вас JDK/JRE обычная, от Oracle?
Попробуйте, пожалуйста раза три подряд вызвать gc и посмотреть не уменьшится ли объем памяти.

Автор:  Amir [ 28 янв 2014, 19:38 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

Еще может быть от того, что в inet-accounting.xml указано большое кол-во потоков для InetRadiusListener или InetFlowListener (threadCount).

Автор:  barguzin2 [ 28 янв 2014, 20:29 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

JDK 1.6u45 Oracle

Вот NAS-ов дофига - больше 500. Это клиентские микротики - беспроводные точки доступа. К ним подключаются уже по PPPoE оконечные pc`s/routers. Схема досталась по наследству, но достаточна эффективна с точки зрения раздачи белых адресов при подключении, на DialUp модуле работало довольно чётко.

В inet-accounting.xml прописано <param name="threadCount">10</param> для радиуса и флоу.

Было так
Код:
Started: 28.01.2014 21:11:35    Uptime: 0 d 02:13:59
Memory total: 1 460 535 296; max: 1 908 932 608; free: 340 502 616
Memory pools:
  Non-heap memory[Code Cache]: max: 50 331 648; used: 7 559 040; peek: 7 564 544
  Heap memory[PS Eden Space]: max: 698 744 832; used: 7 172 400; peek: 678 363 136
  Heap memory[PS Survivor Space]: max: 8 388 608; used: 2 654 336; peek: 238 532 736
  Heap memory[PS Old Gen]: max: 1 431 699 456; used: 1 110 205 944; peek: 1 431 360 376
  Non-heap memory[PS Perm Gen]: max: 85 983 232; used: 35 805 264; peek: 35 805 264

сделал 3 раза accountimg.sh gc, стало
Код:
Started: 28.01.2014 21:11:35    Uptime: 0 d 02:14:29
Memory total: 1 460 600 832; max: 1 908 932 608; free: 726 311 928
Memory pools:
  Non-heap memory[Code Cache]: max: 50 331 648; used: 7 559 040; peek: 7 564 544
  Heap memory[PS Eden Space]: max: 698 613 760; used: 4 236 448; peek: 678 363 136
  Heap memory[PS Survivor Space]: max: 8 585 216; used: 0; peek: 238 532 736
  Heap memory[PS Old Gen]: max: 1 431 699 456; used: 730 062 656; peek: 1 431 360 376
  Non-heap memory[PS Perm Gen]: max: 85 983 232; used: 35 804 920; peek: 35 805 536


Доктор, он жить будет ?

Автор:  Amir [ 29 янв 2014, 17:50 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

Если постоянно растет и 1-3 вызова accountimg.sh gc не помогают освободить обратно - то скорее всего утечка.
В вашем случае, думаю дело в конфигурации - она парсится для каждого NAS'а и для каждого NAS'а хранятся распарсенные наборы RADIUS-атрибутов.
По крайней мере кроме мусора в дампе чаще всего встречал наборы RADIUS-атрибутов, привязанные к NAS'ам.
Для начала попробуем оптимизировать разбор атрибутов в ближайших билдах.

Автор:  barguzin2 [ 29 янв 2014, 19:10 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

В основном это radius.inetOption.optionId.attributes. Их как-то можно в один запихать, чтобы настройки брались из конфигов опций через макросы?

И, кстати, нафига они нужны Аккаунтингу ? Их всего не более 30 штук на девайс (в типе устройства прописаны). Пусть даже NAS`ов штук 600 - итого 1800 атрибутов. Неужели это отъедает львиную долю памяти ? Хотя память то не сразу съедается после старта (полной загрузки конфигов), а спустя какое-то время.

Автор:  Amir [ 29 янв 2014, 19:45 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

Все, понял.
Дело в большом кол-ве RADIUS-источников. При получении и записи RADIUS-пакетов используются буферы. Буферы на каждый поток свои. Они и используют столько памяти.
У вас сейчас, похоже, в inet-accounting.xml указано:
Код:
<param name="datalog.radius.chunk.size" value="524328" />
Или, возможно, не указано совсем.
Попробуйте указать (и в inet-access.xml) тоже:
Код:
<param name="datalog.radius.chunk.size" value="65536" />

Цитата:
И, кстати, нафига они нужны Аккаунтингу ?
Хороший вопрос. Подсистема RADIUS пришла из Dialup, поэтому так получилось. Вместе с кэшем сделаем, чтобы в Accounting вообще не грузились лишние атрибуты.

Автор:  barguzin2 [ 29 янв 2014, 21:00 ]
Заголовок сообщения:  Re: [BGInetAccounting] Недостаток памяти системы

5 минут - полет нормальный.
Код:
Started: 29.01.2014 23:48:57    Uptime: 0 d 00:05:55
Memory total: 364 118 016; max: 1 908 932 608; free: 215 969 872
Memory pools:
  Non-heap memory[Code Cache]: max: 50 331 648; used: 5 644 864; peek: 5 653 824
  Heap memory[PS Eden Space]: max: 690 880 512; used: 12 524 672; peek: 678 297 600
  Heap memory[PS Survivor Space]: max: 983 040; used: 917 600; peek: 11 350 992
  Heap memory[PS Old Gen]: max: 1 431 699 456; used: 134 705 872; peek: 134 705 872
  Non-heap memory[PS Perm Gen]: max: 85 983 232; used: 34 714 320; peek: 34 714 320

У нас еще DHCP-агентов (свичей) дофига будет - там тоже если что datalog.dhcp.chunk.size подуменьшить ? сейчас 131072 стоит. Пока таких устройств порядка 120, но это число вырастет раза в 3 после полного перехода с IPN.

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