|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (16)
просмотр истории страницы... |
| app['worker.loglevel']='warning' - уровень логирования ошибок worker['balance_change.fork.cnt']='1' - количество потоков balance_change |
| worker['abonents.perfork.cnt']='100' - количество абонентов обрабатываемых в каждом потоке balance_change службы worker |
| app['worker.multiprocessing.enabled']='0' - включает многопоточность, по-умолчанию эта опция выключена app['worker.enabled']='1' - включение воркера |
... |
| h2. Включение и настройка |
| h3. Включение многопоточности |
| Для включения многопоточного режима, установите опцию worker.multiprocessing.enabled в единицу и перезапустите ядро: {code:title=Опция в /app/asr_billng/cfg/config} |
... |
| {code} |
| h3. Настройка многопоточности |
| h3. Включение и настройка многопоточности |
| |
| Рассмотрим настройку многопоточности на примере *balance_change*. В конфигурационном файле *asr_billing* за balance_change отвечают следующие настройки: |
| Параметры для регулирования работы службы воркер: * *abonents.perfork.cnt* - задаёт количество обрабатываемых абонентов для всех потоков службы воркер. |
| {code} |
| worker['abonents.perfork.cnt']='110' - количество абонентов обрабатываемых каждым воркером за итерацию worker['balance_change.fork.cnt']='5' - количество подпроцессов обработки баланса |
| worker['abonents.perfork.cnt']='100' |
| {code} |
| Используя различные комбинации этих переменных можно отладить скорость работы воркера. |
| * *abonents.perfork.<имя процесса>* - задаёт количество обрабатываемых абонентов для потоков конкретного процесса. Например для процесса *balance_change*: {code} worker['abonents.perfork.balance_change']='150' {code} * *<имя процесса>.fork.cnt* - количество потоков обработки внутри конкретного процесса. Например для процесса *balance_change*: {code} worker['balance_change.fork.cnt']='5' {code} h5. Простая настройка многопоточности Обычно для ускорения работы ядра биллинг достаточно включить мнгопоточность и добавить несколько потоков обработки баланса. При этом количесво абонентов обрабатываемых за каждую итерацию можно оставить стандартным. Увеличим количество потоков процесса обработки балансов *balance_change*. В конфигурационном файле *asr_billing* установим параметры для balance_change: {code} worker['balance_change.fork.cnt']='5' - количество потоков обработки баланса {code} Используя различные значения переменной можно отладить скорость работы службы воркер. |
| Пример лога: {code} |
... |
| 2018-06-27 19:37:29,526 - worker - worker - INFO - Fork has finished:daemons.balance_change.4, Processed 0 in 0.372s. {code} |
| Общие рекомендации по настройке: * Одна итерация не должна превышать 180 секунд, если больше - уменьшите количество потоков/абонентов balance_change. * При массовых списаниях (раз в месяц при типе списания "Ежемесячно" и каждый день при "Ежедневно равными долями в день" или "Ежедневно"), каждый процесс balance_change должен обработать не менее 1000 записей, при этом уложиться в 180 секунд * Общее количество подпроцессов balance_change и прочих не должно превышать количество потоков процессора, иначе balance_change может замедлить всю работу системы * На слабых платформах лучше не изменять настройки, а оставить стандартные: 110 абонентов в 1 потоке |
| |
| h3. Настройка многопоточности account_voip |
| h5. Тонкая настройка многопоточности |
| |
| Параллельную обработку трафика телефонии можно включить, настроив *account_voip.fork.cnt*: {code} worker['account_voip.fork.cnt']='16' {code} Заметки и рекомендации по настройке: * Параметр может отсутствовать в конфигурационном файле по-умолчанию. Если он требуется - добавьте вручную. * Количество потоков не должно превышать количество доступных потоков процессора. Например, если у Вас два шестиядерных процессора с технологией hyperthreading, то account_voip.fork.cnt должен быть не более 24 (2 * 6 * 2). * На слабых платформах лучше не изменять настройки и оставить один поток |
| Для систем с высокой нагрузкой потребуется тонкая настройка многопоточности. Общие рекомендации по настройке: * Одна итерация не должна превышать 180 секунд, если больше - уменьшите количество абонентов в потоке; * При массовых [списаниях|Методы списания] (раз в месяц при типе списания "Ежемесячно" и каждый день при "Ежедневно равными долями в день" или "Ежедневно"), каждый процесс balance_change должен обработать не менее 1000 записей, при этом уложиться в 180 секунд; * Общее количество потоков службы воркер не должно превышать количество потоков процессора, иначе это может замедлить работу всю системы; * Мы рекомендыем оставлять запас ядер процессора для выполния других задачь на биллинга; * На слабых платформах лучше не изменять настройки, а оставить стандартные: 110 абонентов в 1 потоке; * В системе есть ограничение в *5000* записей на поток вне зависимости от настройек. |
| |
| В каждом потоке {{account_voip}} обрабатывает звонки для 1000 разных абонентов. На текущий момент, это значение не настраивается и прописано в коде ядра. Пример лога: {code} 2021-10-11 14:07:19,799 - worker - worker - INFO - Fork has finished:daemons.account_voip.1, Processed 963 in 16.700s. 2021-10-11 14:07:19,811 - worker - worker - INFO - Fork has finished:daemons.account_voip.10, Processed 6 in 14.522s. 2021-10-11 14:07:19,815 - worker - worker - INFO - Fork has finished:daemons.account_voip.13, Processed 316 in 14.921s. 2021-10-11 14:07:19,816 - worker - worker - INFO - Fork has finished:daemons.account_voip.14, Processed 58 in 14.599s. 2021-10-11 14:07:19,817 - worker - worker - INFO - Fork has finished:daemons.account_voip.15, Processed 4579 in 23.562s. {code} h3. Настройка многопоточности events Настроить многопоточность службы обработки событий оборудования можно параметром: {code} worker['events.fork.cnt']='8' {code} h3. Настройка многопоточности send_commands Настроить многопоточность службы отправки коммманд на оборудование можно параметром: {code} worker['send_commands.fork.cnt']='8' {code} h3. Настройка многопоточности usluga_abon_pay Настроить многопоточность службы списанием за услуги можно параметром: {code} worker['usluga_abon_pay.fork.cnt']='8' {code} h3. Настройка многопоточности account_traf {code} worker['account_traf.fork.cnt']='8' {code} |
| h1. Отладка |
... |
