Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Очень высокая нагрузка на Астериск. Task processor queue reached 500 scheduled tasks

0

Добрый день. Имеется чистый Астериск 14.7.6. На нем настроено ~150 одноканальных транков на Билайн. На этот Астериск приходят звонки с поставщика, и дальше, по префиксу отправляются на один из свободных транков Билайна. Одноканальность реализована при помощи call-limit=1, в настройках транков, т.к. Билайн на своей стороне этого сделать не может. В данный момент диалплан выглядит вот так

exten => _#777X.,1,Set(GMIN=1) ;номер первого транка
exten => _#777X.,n,Set(GMAX=50) ;номер последнего транка
exten => _#777X.,n,Set(COUNT=$[${GMAX}-${GMIN}+1])
exten => _#777X.,n,Set(GATE=${RAND(${GMIN},${GMAX})})
exten => _#777X.,n(noop),Noop(call trying, COUNT= ${COUNT})
exten => _#777X.,n,GotoIf($[${COUNT} > 0]?:hangup)
exten => _#777X.,n,Set(COUNT=$[${COUNT} - 1])
exten => _#777X.,n,Dial(SIP/beeline-${GATE}/${EXTEN:4})
exten => _#777X.,n,GotoIf($[$["${DIALSTATUS}" = "CHANUNAVAIL"] || $["${DIALSTATUS}" = "CONGESTION"]]?:hangup)
exten => _#777X.,n,GotoIf($[${GATE} < ${GMAX}]?add)
exten => _#777X.,n,Set(GATE=${GMIN})
exten => _#777X.,n,Goto(noop)
exten => _#777X.,n(add),Set(GATE=$[${GATE} + 1])
exten => _#777X.,n,Goto(noop)
exten => _#777X.,n(hangup),Hangup

Т.е. берется случайный транк и на него пробуем звонить, если он занят, берем следующий транк, если и он занят, то следующий и так далее, пока не найдем свободный. Все в целом работает, но при учете пары сотен одновременных звонков возникает очень большое число ошибок такого вида

WARNING[12410][C-000f3a06]: taskprocessor.c:888 taskprocessor_push: The 'subm:endpoint_topic_all-cached-00000007' task processor queue reached 500 scheduled tasks again.

И такого, при которых приходит отбой - 403 ошибка

ERROR[12272][C-000f39a9]: res_rtp_asterisk.c:3126 ast_rtp_new: Oh dear... we couldn't allocate a port for RTP instance '0x7f4ed046f998'
WARNING[12272][C-000f39a9]: app_dial.c:2530 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)

Которые, как я понимаю, вызваны перегрузкой астера постоянным перебором доступного транка. LA 1min на ЦПУ при этом примерно 2,5-3.

В интернете прочитал, что ошибку с переполненной очередью может давать модуль PJSIP (который я не использую), но его отключение вроде не принесло никаких изменений. Подскажите, пожалуйста, как можно решить эти проблемы , можно у меня клешни не правильно работают и я диалплан коряво составил ?

удалить закрыть спам изменить тег редактировать

спросил 2018-12-18 11:56:19 +0400

A66aT Gravatar A66aT
29 15 10

2 Ответа

0

Ну так у вас на каждый звонок(включая звонки на несуществующий номер) выполняется

8*150 = 1200!!!

переходов + 150 канальных операций, в случае если заняты 149 транков.

С чего вы удивляетесь?

Делайте все звонки рандомно, проверяйте состояние транка перед попыткой звонка.

А еще лучше - отслеживайте состояние транка во внешнем приложении и не звоните чаще раза в 5 секунд на транк и не звоните на занятый.

Тоесть да, у вас клешни(пропустили в универе оценки сложности) и канал тут непричем совершенно.

ссылка удалить спам редактировать

ответил 2018-12-19 12:34:34 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

обновил 2018-12-19 12:36:10 +0400

0

задра**вать каналы много ума не надо.

call-limit давно уже DEPRICATED.

Используйте GROUP_COUNT() см. тут и если свободен, тогда уж и звоните...

ссылка удалить спам редактировать

ответил 2018-12-19 02:14:34 +0400

Zavr2008 Gravatar Zavr2008 flag of Russian Federation
2886 11 9 40
http://mh.otx.ru/

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2018-12-18 11:56:19 +0400

Просмотрен: 3,252 раз

Обновлен: Dec 19 '18

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.