forum.bitel.ru http://forum.bitel.ru/ |
|
Проблемы с отложенным обсчетом update http://forum.bitel.ru/viewtopic.php?f=5&t=5054 |
Страница 1 из 1 |
Автор: | Cromeshnic [ 01 фев 2011, 08:12 ] |
Заголовок сообщения: | Проблемы с отложенным обсчетом update |
Задействовали вот такую схему: 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 для активных сессий? |
Автор: | Cromeshnic [ 01 фев 2011, 08:25 ] |
Заголовок сообщения: | Re: Проблемы с отложенным обсчетом update |
Наверное нужно отключить log_session.delayed.update ![]() |
Автор: | Cromeshnic [ 07 фев 2011, 08:12 ] |
Заголовок сообщения: | Re: Проблемы с отложенным обсчетом update |
И всё же: нельзя ли при остановке сервера "сбрасывать" накопленные в памяти данные по сессиям в базу? В частности, записывать актуальное время стопа в log_session для активных, чтобы потом корректно их восстановить? Ну либо через ./radius.sh сделать команду для такого? |
Автор: | Администратор [ 25 фев 2011, 11:21 ] |
Заголовок сообщения: | Re: Проблемы с отложенным обсчетом update |
Проще отключить log_session.delayed.update, заодно и время будет показывать в мониторе нормально. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |