ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Проблемы и их решения Asterisk как такового

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

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

Сообщение SolarW » 17 июл 2018, 17:41

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

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

Дано:
- на 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


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

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

Сообщение virus_net » 17 июл 2018, 19:26

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

ENUMER - звони бесплатно и напрямую.
virus_net
 
Сообщений: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

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

Сообщение SolarW » 17 июл 2018, 21:12

virus_net писал(а):Не являетесь разработчиком ? Тогда зачем поставили версию для разработчиков ?

Был необходим ARI с командами доступными в ветке 14.
В принципе можно безболезненно переползти на 15-ю ветку - в FreePBX Distro это простой скрипт делает... Думаете поможет?
Аватар пользователя
SolarW
 
Сообщений: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

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

Сообщение virus_net » 18 июл 2018, 07:56

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

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

ENUMER - звони бесплатно и напрямую.
virus_net
 
Сообщений: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

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

Сообщение SolarW » 18 июл 2018, 10:05

virus_net писал(а):Я думаю, что судя по описанию проблемы, без глубокого траблшута, который под силу разрабу, тут не обойтись.

Ну может удастся получить ответ если немного упростить вопрос - можно ли как-то отказаться от транскодинга в slin при маршрутизации звонков SIP/... <-> Local/...?
Или такой транскодинг неизменяемое свойство дизайна asterisk'а?
Аватар пользователя
SolarW
 
Сообщений: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

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

Сообщение gosha » 18 июл 2018, 10:15

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

но на 8 cpu и 44 каналах la > 3 и загрузка процессоров 50% какаято фигня в любом случае.
gosha
 
Сообщений: 370
Зарегистрирован: 06 сен 2010, 17:41

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

Сообщение Zavr2008 » 18 июл 2018, 13:42

говорите что между 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-GW. Модернизация УПАТС с E1, Установка FreePBX, Системы антифрод "в разрыв" потоков E1 PRI / SS#7 ISUP.
Аватар пользователя
Zavr2008
 
Сообщений: 2158
Зарегистрирован: 27 янв 2011, 01:35

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

Сообщение SolarW » 18 июл 2018, 18:30

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

Специально разный не задаю.
Везде в настройках сейчас стоит:
Код: выделить все
disallow=all
allow=ulaw

Дополнительных параметров (пакетизация вроде может через двоеточие задаваться?) не наблюдается.
gosha писал(а):но на 8 cpu и 44 каналах la > 3 и загрузка процессоров 50% какаято фигня в любом случае.

Вот и мне почему-то так показалось...
Уже было заподозрили что проблема в том что вызовы пишутся - но согласно iotop нагрузка на диск мизерная (изредка идет запись на скорости 100 кб/сек, такое ощущение что не постоянно пишет а просто изредка кэш сбрасывает) и в top колонка wa на нуле, т.е. проц не ждет окончания записи на диск...
Последний раз редактировалось SolarW 18 июл 2018, 18:50, всего редактировалось 1 раз.
Аватар пользователя
SolarW
 
Сообщений: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

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

Сообщение SolarW » 18 июл 2018, 18:45

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 » 09 апр 2020, 18:42

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

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

При создании каналов использующих Local из ARI необходимо явно указывать кодек - тогда не транскодит в slin и не жрет проц.
Аватар пользователя
SolarW
 
Сообщений: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина


Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH