Биллинг медленно работает

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (1)

просмотр истории страницы

Подключите для БД [отдельный диск |CarbonBilling:Добавление диска под БД] с высокой скоростью доступа.

h2. Всё очень медленно работает, не проходятплатежи, не управляется оборудование, не работают авторизации

h3. Причина

Проверьте что БД не слишком большого размера - если она привышает 10Гб, это уже достаточно много, система мониторинга создаст автоматическую заявку по этой проблеме [ALARM Превышен лимит размера БД|https://docs.carbonsoft.ru/51019784#Системамониторинга-checkbillingdbsize.sh]

В среднем 10Гб достаточно чтобы хранить данные нескольких десятков тысяч абонентов без дополнительных оптимизаций или активной работы механизма партиционирования.

Если абонентов у Вам меньше 50 000, при этом база вышла за рамки 10Гб, нужно изучить на что ушло место, очистить лишние данные и уменьшить размер БД. Ниже описано как это сделать.

h3. Решение

# Определите какие таблицы БД занимаю больше всего места:
{code}chroot /app/asr_billing/ gstat-fb /var/db/billing.gdb -data | \
grep -E '^[A-Z]|Data pages:' | sed ':a;N;$!ba;s/\n */ /g; s/,//g' | \
awk '{print $5,"data pages;",$1,$2";",$9,"data page slots;",$12,"average fill"}' | \
sort -h | tail -n 3{code}
Скрипт покажет топ 3 таблиц отсортированных по количеству "страниц". В большинстве случаев такая сортировка достаточно точно поможет определить на что ушло место.
# Проанализируйте вывод, будет что-то вроде этого:
{code}
39178 data pages; ARCH_ACCOUNT_STACK (146); 39178 data page slots; 87% average fill
75789 data pages; RADIUS_SESSIONS (254); 75789 data page slots; 86% average fill
949991 data pages; EVENTS_STACK (193); 949991 data page slots; 94% average fill{code}
По выводу видно что под таблицау EVENTS_STACK в базе отведенено существенно больше места, чем под все прочие.
# Дальшеньшие шаги зависят от конкретных таблиц - суть в том чтобы TOP3 были примерно одного порядка)
# Решив проблему переполнения таблиц, сделайте резервную копию и восстановление из неё - таким образом работает механизм "сборки мусора". Это описано в стате по системе мониторинга в [тесте размера БД|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=51019784#Системамониторинга-checkbillingdbsize.sh]

h4. EVENTS_STACK

В общих чертах описание возможных проблем переполнения стека команд для оборудоания можно найти в статье по [https://docs.carbonsoft.ru/pages/viewpage.action?pageId=51019784#Системамониторинга-checkeventsstackcount.sh|системе мониторинга]

Описание подистемы отправки команд и пути отладки описаны в статье [https://docs.carbonsoft.ru/display/CarbonBilling/nas_event_daemon|nas_event_daemon]

Проблема чаще всего возникает если используется авторизация по RADIUS.

Наиболее частче причины:
* Медленный диск, в результате чего при перезагрузке оборудования происходит массовая авторизация абонентов, но события не отправляются достаточно быстро, поэтому абоненты продолжают авторизоваться и стект продолжает пополняться
* Проблемы оборудования: возможно что-то не так с NAS-сервером, в результате чего постоянно отпадают RADIUS-сессии и абоненты переавторизуются, стек копится, например NAS-сервер слишком медленно отвечает биллингу
* Ошибки в [скрипте управления NAS|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=51708724#Интеграцияоборудованияинтернет-Управлениесессиямиабонентовнаоборудовании]: команды отправляются с ошибкой, а в скрипте событий описана обработка этих ошибок, но не слишком оптимально, это так же может замедлять отправку событий и приводить к "снежному кому" в стеке

Возможно Ваша причина тут не описана - здесь помогут хороше понимание схемы взаимодействия биллинга с оборудованием, анализ логов и знание особенностей используемого оборудования.

h4. ARCH_ACCOUNT_STACK

В таблице хранятся проводки, влияющие на баланс абонента. "Проводки" в терминах бухгалтерии.

Возможные причины и решения:
# У Вас включена опция [сохранять движения всего трафика|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=63242421#Глобальныенастройкибиллингаиоператора-Глобальныенастройкиоператора] в настройках оператора связи чтобы предоставлять подневную (или почасовую) детализацию объёмов трафика абонентам.
Решить можно следующими способами:
#* Уменьшите частоту отправки данных по трафику. В статье о [службах сбора статистики|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=126484488] Вы найдёте информацию по настраиваемым параметрам частоты отправки - уменьшие частоту в 5-10 раз.
#* Настройте [период хранения исторических данных в базе|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=107577360]. Так [детализация расхода|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=50660208] станет доступна за менее длительный период, но база будет работать быстрей
# Возможно это проводки за списания и тогда через [конструктор отчётов|CarbonBilling:Конструктор отчетов] постарайтесь понять структуру насхода: у каких абонентов больге всего проводок, по каким операциям и тд. Возможно где-то в настройках услуг или ведении абонентов допущена ошибка.

h4. RADIUS_SESSIONS

В таблиц хранится история RADIUS-авторизций. Если таблица слишком разраслась, настройте [период хранения исторических данных в базе|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=107577360] - умнеьшите его. Если это не помогло, возможно проблема так же где-то в авторизациях или оборудованиии и вероятно помимо таблицы с историей авторизаций, у Вас так же разрастётся EVENTS_STACK.