Доброго времени суток.
Сегодня перегружали одну из цисок, и решили проверить как поведет себя радиус если оставить подключаться абонентов as is.
Собственно сразу же обнаружились проблемы в
Код:
access-requests per minute accept:
ignore per minute access-request:
Сразу после старта реквестов было ~15000, игноров в районе 13000.
При этом абоненты не подключались. Прождали минут 10 для теста (хе-хе) но ничего не изменилось.
Пришлось на циске обрубать интерфейсы и постепенно включать, чтобы радиус не "захлебнулся" запросами.
Как то можно подкрутить подобное, чтобы оно не возникало.
Код:
Java Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM [1.7.0_72] /usr/java/jdk1.7.0_72/jre
Runtime name: 61648@bgbilling
Java endorsed dirs: /lib/endorsed:/usr/java/default/lib/endorsed
OS: Linux 2.6.32-358.6.1.el6.x86_64 [amd64], file.encoding: UTF-8, user.name: root
Heap sizes: current=366080k free=362250k max=5430272k
Kernel version 6.1.1081 / 13.07.2015 18:42:19
Inet version 6.1.703 / 14.07.2015 21:51:17
Radius:
accounting-requests per minute start: 0; stop: 0; update: 0
access-requests per minute accept: 4203; reject: 70
ignore per minute access-request: 73; accounting-update: 0
Antispam ban count: 1120; used per minute: 7073
Started: 09.09.2015 09:09:35 Uptime: 0 d 00:39:17
Memory total: 475 004 928; max: 2 863 661 056; free: 170 998 528
Memory pools:
Non-heap memory[Code Cache]: max: 50 331 648; used: 9 858 496; peek: 9 868 224
Heap memory[PS Eden Space]: max: 1 063 780 352; used: 22 499 832; peek: 892 862 464
Heap memory[PS Survivor Space]: max: 4 718 592; used: 1 441 792; peek: 69 532 520
Heap memory[PS Old Gen]: max: 2 147 483 648; used: 280 069 928; peek: 387 075 728
Non-heap memory[PS Perm Gen]: max: 536 870 912; used: 32 369 736; peek: 32 369 736
Thread count: 312
Trees in cache: 0
Connections pool to Master status Idle: 19; Active: 6; maxActive: 300; maxIdle: 20
Код:
<!-- Cоздание слушателя radius-пакетов на порту с передачей ему процессора и dataLogger -->
<bean name="radiusListener" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusListener">
<constructor>
<!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех -->
<param name="host" value=""/>
<!-- Порт, на котором будет открыт сокет -->
<param name="port" value="1820"/>
<!-- Размер буфера приема слушателя -->
<param name="recvBufferSize">512 * 1024</param>
<!-- Рекомендуемый SO_RCVBUF сокета -->
<param name="soRCVBUF"></param>
<!-- Количество потоков-обработчиков -->
<param name="threadCount">50</param>
<!-- Максимальное количество пакетов в очереди на обработку -->
<param name="maxQueueSize">700</param>
<!-- Передача процессора -->
<param name="processor">radiusProcessor</param>
<!-- Режим работы, RadiusListener.Mode.authentication -->
<param name="mode">RadiusListener.Mode.authentication</param>
<!-- Передача dataLogger -->
<param name="dataLogger">radiusDataLogger</param>
</constructor>
</bean>
Текущий конфиг устройства Access+Accounting
Код:
access.group=1
accounting.deviceTypeIds=1
accounting.tariffication.checkPrice=1
accounting.worker.1.event.tracking.1.batchSize=0
accounting.worker.1.event.tracking.1.delay.millis=200
accounting.worker.1.serv.tracking.1.accountingPeriodActivate=1
accounting.worker.1.serv.tracking.1.batchSize=0
accounting.worker.1.serv.tracking.1.delay=30
accounting.worker.1.tariffication.1.batchSize=1000
accounting.worker.1.tariffication.1.delay=10
accounting.worker.1.tariffication.1.minDeltaAmount=104857600
accounting.worker.1.tariffication.2.batchSize=1000
accounting.worker.1.tariffication.2.delay=20
accounting.worker.1.tariffication.2.minDeltaAmount=10485760
accounting.worker.1.tariffication.3.batchSize=1000
accounting.worker.1.tariffication.3.delay=30
accounting.worker.1.tariffication.3.minDeltaAmount=0
accounting.worker.1.thread.count=3
accounting.worker.1.tracking.1.batchSize=1000
accounting.worker.1.tracking.1.delay=10
accounting.worker.2.flushing.1.batchSize=1000
accounting.worker.2.flushing.1.delay=30
accounting.worker.2.flushing.1.minDeltaAccount=0
accounting.worker.2.flushing.1.minDeltaAmount=0
accounting.worker.2.thread.count=1
accounting.worker.3.finishing.1.batchSize=5000
accounting.worker.3.finishing.1.delay=5
accounting.worker.3.thread.count=1
antispam.ban.time=900
antispam.key.attributes=User-Name,Calling-Station-Id
antispam.reject.count=2
antispam.reject.per.time=120
authError.async.maxQueueSize=5000
authError.async.timeout=50
authError.update=1
client.gui.expand.device.tree=0
connection.close.timeout=1300
connection.disable.close.timeout=1300
connection.disable.suspend.timeout=900
connection.finish.timeout=5
connection.start.fromAccept=1
connection.suspend.timeout=300
connector.http=127.0.0.1:8080
connector.https=*:8443
context.path=/bgbilling
contract.status.active.codes=0
contract.status.suspend.codes=2,3,4,5,6
db.maxActive=300
db.maxIdle=20
db.validationTimeout=10
deviceId=1611
nas.radius.deviceTypeIds=17,18
nas.radius.key.deviceTypeIds=2
port.admin=2005
radius.deviceTypeIds=17,18
radius.key.deviceTypeIds=2
session.split.onTariffOption=1
Понятно, что в принципе это нестандартная ситуация, но на будущее хотелось бы избежать подобного
