VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Высокая загрузка процессора

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
Аватара пользователя
SolarW
Сообщения: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Высокая загрузка процессора

Сообщение SolarW »

Здравствуйте.

Давненько не заходил, но вот возник вопрос и я опять с вами :-)

Дано:
- на AWS крутится виртуалка с FreePBX Distro (Asterisk 14.7.5)
- большинство звонков ходят между SIP/... и Local/...
- получается при этом совсем неприличная загрузка проца (согласно top/htop грузит проц процесс asterisk)
- более детальное изучение проблемы с помощью perf top показало что загрузку вызывает codec_resample.so
- проверил эндпойнты, и внешние и внутренние использую ulaw кодек
- попробовал module unload codec_resample.so перестали ходить внутренние звонки с ошибкой не найден путь трансляции между SIP/... и Local/...
- дописал transcode_via_sln=no в asterisk.conf, тоже не помогло

Решил обратится к знающим людям, как можно в моём случае снизить нагрузку на CPU.
2018-07-12_200741.png
Как-то вот так это безобразие выглядит.
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Высокая загрузка процессора

Сообщение virus_net »

Четные версии Asterisk для разработчиков. Раз установили такую версию, то вам и карты в руки. Исходный код доступен.
Не являетесь разработчиком ? Тогда зачем поставили версию для разработчиков ?
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Аватара пользователя
SolarW
Сообщения: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Re: Высокая загрузка процессора

Сообщение SolarW »

virus_net писал(а):Не являетесь разработчиком ? Тогда зачем поставили версию для разработчиков ?
Был необходим ARI с командами доступными в ветке 14.
В принципе можно безболезненно переползти на 15-ю ветку - в FreePBX Distro это простой скрипт делает... Думаете поможет?
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Высокая загрузка процессора

Сообщение virus_net »

Я думаю, что судя по описанию проблемы, без глубокого траблшута, который под силу разрабу, тут не обойтись.
Раз так, то мне сомнительно, что на форуме найдется кто-то кто поможет решить эту проблему "птичкой в конфиге".
Посему тут или описывать проблему на багтраке разрабов и ждать помощи от них, или переползать на другую версию, в которой, возможно, проблемы уже нет.
Вот что думаю я.

Сам не давно был в подобной ситуации, но только в роли разраба был я сам. Из-за допущенной неточности в коде программа потребляла 100% одного из ядер CPU.
Никакими изменениями в конфиге, довольно много всяческих опций, программы это не побороть. Только анализ кода помог найти и устранить неточность, которая и приводила к такому.
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Аватара пользователя
SolarW
Сообщения: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Re: Высокая загрузка процессора

Сообщение SolarW »

virus_net писал(а):Я думаю, что судя по описанию проблемы, без глубокого траблшута, который под силу разрабу, тут не обойтись.
Ну может удастся получить ответ если немного упростить вопрос - можно ли как-то отказаться от транскодинга в slin при маршрутизации звонков SIP/... <-> Local/...?
Или такой транскодинг неизменяемое свойство дизайна asterisk'а?
gosha
Сообщения: 375
Зарегистрирован: 06 сен 2010, 17:41
Контактная информация:

Re: Высокая загрузка процессора

Сообщение gosha »

у вас там sample rate для ulaw и внутри и снаружи одинаковый везде ?

но на 8 cpu и 44 каналах la > 3 и загрузка процессоров 50% какаято фигня в любом случае.
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Высокая загрузка процессора

Сообщение Zavr2008 »

говорите что между Local и SIP? :)

Local сам по себе - промежуточное звено. что там конкретно требует транскодинг из приложений?
Относительно ULAW - там четко 8000 обычно.

Где INVITE с SDP чтобы можно было понять что у Вас происходит?

И что за SIP - не chan_pjsip ли?
https://community.asterisk.org/t/high-cpu-spikes-with-pjsip-and-asterisk-13-15/71087/3
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
Аватара пользователя
SolarW
Сообщения: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Re: Высокая загрузка процессора

Сообщение SolarW »

gosha писал(а):у вас там sample rate для ulaw и внутри и снаружи одинаковый везде ?
Специально разный не задаю.
Везде в настройках сейчас стоит:

Код: Выделить всё

disallow=all
allow=ulaw
Дополнительных параметров (пакетизация вроде может через двоеточие задаваться?) не наблюдается.
gosha писал(а):но на 8 cpu и 44 каналах la > 3 и загрузка процессоров 50% какаято фигня в любом случае.
Вот и мне почему-то так показалось...
Уже было заподозрили что проблема в том что вызовы пишутся - но согласно iotop нагрузка на диск мизерная (изредка идет запись на скорости 100 кб/сек, такое ощущение что не постоянно пишет а просто изредка кэш сбрасывает) и в top колонка wa на нуле, т.е. проц не ждет окончания записи на диск...
Последний раз редактировалось SolarW 18 июл 2018, 17:50, всего редактировалось 1 раз.
Аватара пользователя
SolarW
Сообщения: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Re: Высокая загрузка процессора

Сообщение SolarW »

Zavr2008 писал(а):говорите что между Local и SIP? :)

Local сам по себе - промежуточное звено. что там конкретно требует транскодинг из приложений?
Относительно ULAW - там четко 8000 обычно.
Чуть подробнее про архитектуру.
По SIP прилетают звонки от оператора и улетают на него же.
Вся коммутация ведется через stasis (ARI).
Для того, чтобы исходящие вызовы происходили по правилам маршрутизации прописанным в FreePBX из stasis'а вызовы делаются через Local/...
Т.е. таким образом может быть вызван как локальный абонент с IP-телефоном так и внешний номер.
При этом достаточно много вызовов так и пролетает транзитом - внешний звонок прилетает в stasis и после принятия решения CRM-системой куда его девать через Local/0671234567 например улетает наружу через того же оператора что и пришел в систему.
Т.е. получается один транк на оператора, на нем соответственно одни и те же настройки ulaw но из-за использования псевдо-канала Local включается принудительный транскодинг в slin.
Как написал выше отключить такое поведение не получается - попытка выгрузить codec-resample приводит к тому что звонки перестают ходить с ошибкой не найден путь транскодинга SIP -> Local
Вспомнил что есть опция transcode_via_sln, прописал ее в no - ноль реакции.
Zavr2008 писал(а):Где INVITE с SDP чтобы можно было понять что у Вас происходит?
Честно говоря пока не смотрел - но не думаю что его содержимое поможет диагностировать данную проблему.
Как видится проблема кроется именно в использовании псевдоканала Local, такое ощущение что єта сущность только и умеет что со slin работать...
Zavr2008 писал(а):И что за SIP - не chan_pjsip ли?
https://community.asterisk.org/t/high-cpu-spikes-with-pjsip-and-asterisk-13-15/71087/3
Да нет, старый добрый chan_sip, освоить chan_pjsip все никак руки не доходят...
Аватара пользователя
SolarW
Сообщения: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Re: Высокая загрузка процессора

Сообщение SolarW »

Солюшн (для гугла):

https://community.asterisk.org/t/avoid- ... nate/73610

При создании каналов использующих Local из ARI необходимо явно указывать кодек - тогда не транскодит в slin и не жрет проц.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH