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

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

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

просмотр истории страницы
h1. Как понять почему биллинг работает медленно?
Проверьте биллинг по следующему алгоритму:
# Разработчики *CarbonSoft* постоянно оптимизируют работу биллинга, повышая его призводительность. [Обновите биллинг на свежую версию|Обновление биллинга].
# Возможно, причина медленной работы в проблеме внутри БД. Попробуйте сделать [резервное коприрование БД с последующим восстановлением|CarbonBilling:Восстановление БД биллинга из резервной копии.#Создание резервной копии БД с последующим восстановлением].
# Проверьте соответсвует ли сервер биллинга [системным требованиям|Системные требования#Carbon Billing 5].
Подключите для БД [отдельный диск |CarbonBilling:Добавление диска под БД] с высокой скоростью доступа.

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

h3. Причина

Проверьте, что БД не слишком большого размера - если она превышает 10Гб, это уже достаточно много, система мониторинга создаст автоматическую заявку по этой проблеме [ALARM Превышен лимит размера БД|Система мониторинга#check_billing_db_size.sh]. 10Гб достаточно чтобы хранить данные 20000 абонентов без дополнительных оптимизаций или активной работы механизма партиционирования. Если эти значения превышены, то нужно найти причины роста объёма БД. Далее очистить лишние данные и уменьшить размер БД. Ниже описано, как это сделать.
Если уменьшение размера БД не дало результатов, возможно нашим разработчикам удасться оптимизировать запросы по выборке данных - создайте заявку на [портале|https://helpdesk.carbonsoft.ru/login.php].

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

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

h3. Решение

# Определите, какие таблицы БД занимают больше всего места:
Скрипт покажет топ 3 таблиц, отсортированных по количеству "страниц". В большинстве случаев такая сортировка достаточно точно поможет определить, на что ушло место. Скрипт для *Firebird 5*.
{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 таблиц, отсортированных по количеству "страниц". В большинстве случаев такая сортировка достаточно точно поможет определить, на что ушло место.
Скрипт для *Firebird 5*
{code}
chroot /app/asr_billing/ gstat-fb5 169.254.30.50:/var/db/billing.fdb -u SYSDBA -pass servicem -data | \
grep -E '^[A-Z]|Data pages:' | grep -v 'Gstat' | sed ':a;N;$!ba;s/\n */ /g; s/,//g' | \
awk '{print $5,"data pages;",$1,$2";",$9,"data page slots;",$12,"average fill"}' pages;",$1";","average fill",$8}' | \
grep -v 'Gstat completion' | \
sort -h | tail -n 3
{code}
# Проанализируйте вывод, будет что-то вроде этого:
{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}
39178 data pages; ARCH_ACCOUNT_STACK; average fill 87%
75789 data pages; RADIUS_SESSIONS; average fill 86%
949991 data pages; EVENTS_STACK; average fill 94%
{code}
*data pages* - количество страниц данных занятое таблицой. *average fill* - коэфицент заполнения страниц данных.
По выводу видно что под таблицау EVENTS_STACK в базе отведенено существенно больше места, чем под все прочие.
# Дальнейшие шаги зависят от конкретных таблиц - суть в том, чтобы TOP3 были примерно одного порядка)
# Решив проблему переполнения таблиц, сделайте резервную копию и восстановление из неё - таким образом работает механизм "сборки мусора". Это описано в статье по системе мониторинга в [тесте размера БД|Система мониторинга#check_billing_db_size.sh]
# Решив проблему переполнения таблиц, сделайте [резервную копию и восстановление из неё|Восстановление БД биллинга из резервной копии.#Создание резервной копии БД с последующим восстановлением] - таким образом работает механизм "сборки мусора". После операции должен увеличится коэфициент *average fill*, при нормальной работе БД он будет более 80%.

h4. EVENTS_STACK