nas_event_daemon

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

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

просмотр истории страницы
nas_event_daemon работает следующим образом:

# В настройке [оборудования|Справочник NAS] можно указать количество потоков, это по сути сколько [учетных записей|CarbonBilling:Учетная запись. Создание и изменение.] будет обрабатываться одновременно
# Форк берет первые 1000 событий по учетной записи, при этом в первую очередь обрабатывается user_info
# Если скрипт отправки события возвращает код ошибки 143 или 254 значит событие откладывается на 0.017 умноженное на номер попытки, всего может быть 10 попыток, т.е. то есть обязательно обратите внимание на дату события и счетчик попыток
# После форка всех потоков демон просто ждет: usleep 50000 (время указано в микросекундах, что равно 0.05 секунды)
# И снова форкает пока не закончатся события в стеке

Можно настроить количество потоков чтобы ускорить процесс, но надо помнить несколько вещей:

* Если на каждую учетку очень много событий и отклик у оборудования долгий то вы просто наспамите демонов, которые скорее всего еще и транзакций навешают друг на друга т.к. один не успеет завершиться за 50000 милисекунд
* Если на учетку по 1 событию и учеток очень много, то увеличение потоков не очень поможет.
* Если на каждую учетную запись очень много событий и отклик у оборудования долгий, то вы запуститите излишнее количество демонов. Это может наоборот замедлить отправку команд.
* Если на учетную запись пиходится по 1 событию и учётных записей много, то увеличение потоков поможет слабо.

Если увеличили потоки обязательно проверьте, что они успевают обрабатывать:
{code}ps aux |grep nas{code}
{code}
ps aux | grep nas
{code}

Не должно со временем расти.
Не должно расти со временем.

{note}
{note}* * При управлении оборудованием по CoA средствами radiclient не должно возникать проблем с параллельной отправкой команд
* При управлении оборудованием по ssh или telnet могут возникать проблемы: ssh может работать недостаточно быстро, telnet часто имеет ограничение на одновременное количество сессий{note}
{note}

h2. Еще немного технических деталей
h3. Конструктор отчетов

Используемые таблицы: EVENTS_STACK_COMPACT, EVENTS_STACK.
Для отладки проблем вы можете использовать [конструктор отчётов|Конструктор отчетов]. Данные в таблицах постоянно перезаписываются, так что данные будут видны только при нагрузке. Используются таблицы:
* *Events_Stack_Compact*
* *Events_Stack*

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

h3. API

Используемые модели: EventsStackCompact, EventsStack.
Для отправки событий вы можете использовать [API|API REST v2.0], используются модели:
* *EventsStackCompact*
* *EventsStack*

h1.Настройка

Переходим на вкладку "ОБОРУДОВАНИЕ", выбираем нужный NAS.
Дополнительно > "Количество потоков для отправки команд на оборудование".
Указываем необходимое количество форков, нажимаем сохранить. (На текущий момент количество форков ограничено, максимум 100.)
# Перейдите на вкладку [оборудования|Справочник NAS], выбите нужный NAS. Укажите в поле Дополнительно - *Количество потоков для отправки команд на оборудование" укажите необходимое количество форков, нажимите сохранить
# Максимальное количество форков 100
Будут # После сохранения будут автоматически запускаться новые форки nas_event_daemon. Количество процессов не должно превышать "количество форков" + 1 процесс "родитель".
* При уменьшении количества форков значение не будет изменяться моментально т.к. процессы должны завершить свою работу.

При уменьшении количества форков значение не будет изменяться моментально т.к. процессы должны завершить свою работу.
Контролируем обработку команд. Например, для микротика:

Контролируем обработку команд с помощью ps aux. Например для микротика:
{code}
ps aux | grep send_mikrotik_cmd
root 27122 2.0 0.0 748333 8230 ? SN 15:47 0:00 /usr/bin/python2.7 /usr/local/bin/send_mikrotik_cmd -s 10.0.0.1 carbon carbon /ip firewall address-list remove numbers=192.168.1.10_crb_blocked
{code}

{code}ps aux |grep send_mikrotik_cmd
root 27122 2.0 0.0 748333 8230 ? SN 15:47 0:00 /usr/bin/python2.7 /usr/local/bin/send_mikrotik_cmd -s 10.0.0.1 carbon carbon /ip firewall address-list remove numbers=192.168.1.10_crb_blocked{code}
Время обработки процессов должно быть менее 50 секунд. Если вы процессы обрабатываются дольше, то изменение количества форков не окажет положительного влияния. Необходимо решать проблему с обработкой команд со стороны оборудования.

Процессы не должны обрабатываться не более 50 секунд. Если Вы наблюдаете эту ситуацию, изменение количества форков не окажет положительного влияния. Необходимо решать проблему с обработкой команд со стороны оборудования.

h1. Отладка

#* *USLUGA_ID* - ID услуги (указывается при изменении статусов услуг абонента в событиях usluga_add, usluga_activated и т.д.)
#* *ACCT_SESSION_ID* - Acct-Session-ID (уникальный ID сессии, используется при авторизации по RADIUS)
# *main stack* (таблица базы данных EVENTS_STACK) - этот стек формируется [ядром биллинга|Worker (ядро биллинга)] из compact stack, к нему добавляются расширенные данные для передачи в скрипт управления оборудованием, после чего они обрабатываются демоном nas_event_daemon и удаляются из стека
#* *ABONENT_ID* - ID абонента
#* *USER_ID* - ID учетной записи