BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 01 фев 2011, 08:12 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Задействовали вот такую схему:
http://bgbilling.ru/v5.1/doc/ch12s09s04 ... abase_work

Указываем в конфиге тарифа:
session_detail.delayed.update=1
log_session.delayed.update=1

Тогда апдейты по сессиям dialup на этих тарифах не вызывают каждый раз тарификации и обновления таблиц биллинга.
Удобно для безлимитчиков, разгружает сервер радиуса. Данные заносятся только по stop-пакету. Правда есть косметическое неудобство: для активных сессий время окончания сессии во всех логах пишется по первому пришедшему апдейту, что вводит многих в заблуждение.

Но вчера столкнулись с гораздо большей проблемой:
при перезагрузке радиус-сервера текущие активные сессии сами восстанавливаются, при этом время последнего апдейта берется из поля session_stop таблицы log_session, где оно у нас не обновляется до стопа. В результате при следующем проходе чекера зависших соединений такие сессии сбрасываются.

Например:

Код:
01-31/16:08:22 INFO [radiusListener-p-4-t-276] connections - [ xxx; ppvasya; 68839 ] DialUpNASConnection update connection..
01-31/16:08:22 INFO [radiusListener-p-4-t-276] connections - [ xxx; ppvasya; 68839 ] Taking zone default from response on calculate sid=15
01-31/16:08:22 INFO [radiusListener-p-4-t-276] connections - [ xxx; ppvasya; 68839 ] Taking zone default from response on calculate sid=15
 ^ - апдейт приходит, но не обсчитывается, т.к. безлимитчик
 
01-31/16:30:35 INFO [Thread-261] connections - [ xxx; ppvasya; 68839 ] Set status SUSPENDED on UpdateSuspendedSetter, time after last update: 1333
 ^ - сервак подвис, забив все коннекшены (из-за другой проблемы), апдейт в 16:23 был, но не обработался, коннект помечается подвисшим, т.к. время с последнего апдейта =1333 сек (22 мин)
 
 -- в 16:35 перегружаем радиус --
 
01-31/16:36:55 INFO [pool-3-thread-1] connections - [ xxx; ppvasya; 15762 ] Taking zone default from response on calculate sid=15
01-31/16:36:55 INFO [pool-3-thread-1] connections - [ xxx; ppvasya; 15762 ] Taking zone default from response on calculate sid=9
01-31/16:36:55 INFO [pool-3-thread-1] connections - [ xxx; ppvasya; 15762 ] Taking zone default from response on calculate sid=7
01-31/16:36:55 INFO [pool-3-thread-1] connections - [ xxx; ppvasya; 15762 ] Taking zone default from response on calculate sid=10
01-31/16:36:55 INFO [pool-3-thread-1] connections - [ xxx; ppvasya; 15762 ] Taking zone default from response on calculate sid=8
01-31/16:36:55 INFO [pool-3-thread-1] connections - [ xxx; ppvasya; 15762 ] Taking zone default from response on calculate sid=140
01-31/16:36:55 INFO [pool-3-thread-1] connections - [ xxx; ppvasya; 15762 ] Taking zone default from response on calculate sid=141
01-31/16:36:55 INFO [pool-3-thread-1] connections - [ xxx; ppvasya; 15762 ] DialUpNASConnection startConnection mode=1
01-31/16:36:55 INFO [pool-3-thread-1] connections - [ xxx; ppvasya; 15762 ] Zone on start default
01-31/16:36:55 INFO [pool-3-thread-1] connections - [ xxx; ppvasya; 15762 ] IP address register on collector
01-31/16:36:55 INFO [pool-3-thread-1] connections - nas-1 Session restored for login: ppbaimos; contract: xxx; ipaddr: x.x.x.x; count: 1516
 ^ - сессия восстановлена после ребута радиуса, счетчик last update time для неё берется из базы (stop_time там = времени первого апдейта = start_time + 15 мин)
01-31/16:37:17 INFO [Thread-84] connections - [ xxx; ppvasya; 15762 ] Set status SUSPENDED on UpdateSuspendedSetter, time after last update: 10541
 ^ - сессия помечается подвисшей, т.к. якобы с апдейтов не было уже 10541 сек (почти 3 часа), хотя на самом деле они были
 
01-31/16:38:15 INFO [Thread-64] connections - [ xxx; ppvasya; 15762 ] Removing as zombi..
01-31/16:38:15 INFO [Thread-64] connections - [ xxx; ppvasya; 15762 ] Dropping connection
01-31/16:38:15 INFO [Thread-64] connections - [ xxx; ppvasya; 15762 ] DialUpNASConnection stoppingConnection
01-31/16:38:15 INFO [Thread-64] connections - [ xxx; ppvasya; 15762 ] DialUpNASConnection has stop Packet => false
01-31/16:38:15 INFO [Thread-64] connections - [ xxx; ppvasya; 15762 ] IP address unregistred from collector
 ^ - соединение сбрасывается в биллинге, но остаётся на NAS-е.


Т.е. это даже не баг, а логическая нестыковка delayed.update и ребута радиуса.
Что можно сделать с этим? Может как-то писать время стопа сессий? Скажем, периодическим проcтавлять в базу session_stop для активных сессий?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 фев 2011, 08:25 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Наверное нужно отключить log_session.delayed.update :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 фев 2011, 08:12 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
И всё же: нельзя ли при остановке сервера "сбрасывать" накопленные в памяти данные по сессиям в базу?

В частности, записывать актуальное время стопа в log_session для активных, чтобы потом корректно их восстановить?

Ну либо через ./radius.sh сделать команду для такого?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 фев 2011, 11:21 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Проще отключить log_session.delayed.update, заодно и время будет показывать в мониторе нормально.


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

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


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

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


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

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