BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 08 июл 2025, 17:43

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Соединение не найдено в BGInetAccounting
СообщениеДобавлено: 14 дек 2012, 16:08 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
После запуска сервера BGInetAccounting в логах периодически появляются следующие ошибки:
Код:
mq 12-14/13:54:48 ERROR [event-proc-p-2-t-1] Consumer - Соединение не найдено (connectionId=91168, deviceId=2, servId=17340)
ru.bitel.bgbilling.common.BGException: Соединение не найдено (connectionId=91168, deviceId=2, servId=17340)
        at ru.bitel.bgbilling.modules.inet.accounting.Accounting.onConnectionCommand(Accounting.java:1919)
        at ru.bitel.bgbilling.modules.inet.accounting.Accounting.notify(Accounting.java:1878)
        at ru.bitel.bgbilling.kernel.event.AbstractConsumer.notify(AbstractConsumer.java:344)
        at ru.bitel.bgbilling.kernel.event.Consumer.notify(Consumer.java:1)
        at ru.bitel.bgbilling.kernel.event.Consumer.onMessage0(Consumer.java:112)
        at ru.bitel.bgbilling.kernel.event.Consumer$EventListenerRunnable.runImpl(Consumer.java:51)
        at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
        at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40)

С чем они связаны и как их побороть?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 дек 2012, 16:22 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Похоже radius.connection.checkDuplicate=2|3 пытается завершить сессию (Access отправляет команду Accounting'у), но сессии уже нет.
Или не было - возможно, после lock wait timeout возникли записи в inet_connection_ со status>0 без соответствующей записи в inet_session_.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 дек 2012, 16:27 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
И что с этим делать?
Можно как-то вычистить из базы левые записи, или со временем всё само устаканится?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 дек 2012, 16:35 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Если есть такие записи - лучше удалить запросом:
Код:
DELETE FROM inet_connection as cc LEFT JOIN inet_session as ss ON ss.connectionId=cc.id WHERE cc.connectionStatus>0 AND ss.id IS NULL


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 дек 2012, 19:16 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Базу почистили ещё вчера. С тех пор в базе нет соединений без сессий.
В логах по-прежнему наблюдаются указанные сообщения об ошибках.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 дек 2012, 00:15 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
В конфигурации присутствует параметр radius.connection.checkDuplicate=2|3 ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 дек 2012, 10:35 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Не успел дописать в субботу - компьютер сдох :(.
Да, параметр radius.connection.checkDuplicate=2 присутствует, и как показало небольшое расследование, ошибки были связаны с ним.
Вообще, логика работы данного параметра не до конца понятна. Сейчас (при radius.connection.checkDuplicate=2), если сессия висит и приходит Access-Request, то выдаётся Access-Reject с кодом Too many sessions и тут же сбрасывается существующая сессия. Но почему бы сначала не сбрасывать сессию, а потом выдавать нормальный Access-Accept?
При radius.connection.checkDuplicate=1 понятно, что нужно сначала дождаться ответа. А что будет, если ответ не придёт, или NAS вернёт ошибку? Ждать пока сессия по таймауту не закроется?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 дек 2012, 11:34 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Вопрос ещё актуален. Что будет, если установлена опция radius.connection.checkDuplicate=1 и
1. ответ от NAS на дисконнект не пришёл,
2. NAS вернул ошибку (типа "сессия не найдена"),
3. в промежутке между запросом на дисконнект и получением стоп-пакета было ещё несколько попыток поднять сессию?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 дек 2012, 16:52 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
radius.connection.checkDuplicate практически дублирует функционал из dialup.
При radius.connection.checkDuplicate=1 идет просто попытка сброса на NAS (изначально в dialup просили такой режим, зачем - не знаю).
Т.е. пока так и не придет стоп пакет или сессия не завершится по таймауту - не пустит.
При radius.connection.checkDuplicate=2 попытается сбросить, а потом завершить сессию в базе (вот тут и возникает ошибка в логах - он просто пытается завершить сессию, которая успела уже все-таки завершиться).
При radius.connection.checkDuplicate=3 - просто завершает а базе.

Т.е. еще в dialup было сделано с тем условием, что сессия отваливается редко и не страшно, если клиенту придется два раза переподключиться после отваливания.

Можем попробовать добавить дополнительные режимы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 дек 2012, 17:38 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Проблема тогда получается вот в чём:
При radius.connection.checkDuplicate=1 и если сессия на NAS'е уже завершилась, то при попытке завершить эту сессию биллингом, NAS вернёт ошибку, и придётся ждать таймаут (~30 мин). Это не очень хорошо.
При radius.connection.checkDuplicate=2 если всё-таки приходит Stop-пакет, то в логах возникает ошибка "Соединение не найдено", и в результате не понятно, то ли это не найдена просто подвисшая сессия, то ли это реальная проблема... Можно ли для данной опции вызывать не Exception и ERROR, а просто писать в лог WARN с комментарием типа "Пришёл стоп-пакет для подвисшей сессии"?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 дек 2012, 14:55 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Цитата:
Можно ли для данной опции вызывать не Exception и ERROR, а просто писать в лог WARN с комментарием типа "Пришёл стоп-пакет для подвисшей сессии"?
Сегодня выложим билд.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.040s | 38 Queries | GZIP : On ]