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

WebRTC Asterisk падает при трафике более 40 активных звонков

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

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

Ответить
alfox84
Сообщения: 3
Зарегистрирован: 10 мар 2011, 23:09

WebRTC Asterisk падает при трафике более 40 активных звонков

Сообщение alfox84 »

WebRTC Asterisk падает при трафике более 40 активных звонков, если используется encryption=yes и icesupport=yes.

Сделали софтфон на WEBRTC (sipml5), все работает отлично, когда вызовов активных немного.

Но когда вызов стает более 40, то астер периодически выпадает в корку, от нескольких минут до нескольких часов.

Повторить легко, если поднять два астера, примерно с такой конфигурацией:
[trunk_72]
type=friend
host=192.168.66.161
port=5060
disallow=all
allow=alaw
context=trunk_72_in
nat=no
t38pt_udptl=no
call-limit=0
qualify=no
canreinvite=no
dtmfmode=inband
nat=force_rport,comedia
avpf=yes
encryption=yes
icesupport=yes
videosupport=no
directmedia=no
encryption=yes

и звонить с одного на другой вот на такой диалплан
007777 => {
Answer();
Wait(10);
Hangup();
};

Если сделать 200 одновременных вызовов, то астер упадет в среднем за 1 минуту.

Если отключить encryption=yes и icesupport=yes, то астер не падает.

Пробовал все версии из 11 ветки (от 11.0 до 11.6)

#0 0x00007f3fd8f93117 in destroy_tdata () from //lib/asterisk/modules/res_rtp_asterisk.so
#1 0x00007f3fd8f93f1c in pj_stun_session_destroy () from //lib/asterisk/modules/res_rtp_asterisk.so
#2 0x00007f3fd8f89c45 in destroy_ice () from //lib/asterisk/modules/res_rtp_asterisk.so
#3 0x00007f3fd8f89d6a in pj_ice_sess_destroy () from //lib/asterisk/modules/res_rtp_asterisk.so
#4 0x00007f3fd8f7e2d8 in ast_rtp_destroy (instance=<optimized out>) at res_rtp_asterisk.c:1833
#5 0x000000000054a075 in instance_destructor (obj=0x2c91478) at rtp_engine.c:212
#6 0x000000000044d716 in internal_ao2_ref (user_data=0x2c91478, delta=delta@entry=-1, file=file@entry=0x5abf96 "astobj2.c", line=line@entry=541, func=func@entry=0x5ac091 "__ao2_ref") at astobj2.c:463
#7 0x0000000000450895 in __ao2_ref (user_data=<optimized out>, delta=delta@entry=-1) at astobj2.c:541
#8 0x000000000054a6ee in ast_rtp_instance_destroy (instance=<optimized out>) at rtp_engine.c:231
#9 0x00007f3fcc43c6e5 in __sip_destroy (p=p@entry=0x2c37588, lockowner=lockowner@entry=1, lockdialoglist=lockdialoglist@entry=1) at chan_sip.c:6541
#10 0x00007f3fcc43d1d2 in sip_destroy (p=0x2c37588) at chan_sip.c:6828
#11 0x000000000044d716 in internal_ao2_ref (user_data=user_data@entry=0x2c37588, delta=delta@entry=-1, file=file@entry=0x5abf96 "astobj2.c", line=line@entry=541, func=func@entry=0x5ac091 "__ao2_ref") at astobj2.c:463
#12 0x0000000000450895 in __ao2_ref (user_data=user_data@entry=0x2c37588, delta=delta@entry=-1) at astobj2.c:541
#13 0x00007f3fcc42b5d3 in dialog_unref_debug (p=p@entry=0x2c37588, tag=tag@entry=0x7f3fcc4b8408 "The ref to a dialog passed to this sched callback is going out of scope; unref it.", file=file@entry=0x7f3fcc4a40e0 "chan_sip.c",
line=line@entry=4433, func=func@entry=0x7f3fcc4bd170 "__sip_autodestruct") at chan_sip.c:2344
#14 0x00007f3fcc48809c in __sip_autodestruct (data=0x2c37588) at chan_sip.c:4433
#15 0x0000000000570e8c in ast_sched_runq (con=0x256fec0) at sched.c:614
#16 0x00007f3fcc479856 in do_monitor (data=data@entry=0x0) at chan_sip.c:28898
#17 0x0000000000587eea in dummy_start (data=<optimized out>) at utils.c:1093
#18 0x00007f3fdc873b50 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#19 0x00007f3fdd655a7d in clone () from /lib/x86_64-linux-gnu/libc.so.6
#20 0x0000000000000000 in ?? ()

Всегда падает на попытке закрыть уже закрытую сессию.

Встречался ли кто с подобным и как победили, если да то как ?


PS. Баг зарепорчен в digium
Аватара пользователя
Sfinx
Сообщения: 672
Зарегистрирован: 21 июн 2011, 23:40
Откуда: Odessa
Контактная информация:

Re: WebRTC Asterisk падает при трафике более 40 активных зво

Сообщение Sfinx »

PS. Баг зарепорчен в digium
Вот пусть они и разбираются. К сожалению текущее состояние астера не позволяет его применять даже для одного звонка по webrtc. Или используйте шлюз или копайте сами. Политика digium настолько еба#утая, что людям сейчас легче написать свою шлюз чем репортить туда баги или тем более фиксить астер ;(
Rus

-----------
SfinxSoft
http://sfinxsoft.com
ys1797
Сообщения: 240
Зарегистрирован: 28 июн 2011, 17:59

Re: WebRTC Asterisk падает при трафике более 40 активных зво

Сообщение ys1797 »

+1
А сюда ссылку на тикет не помешало бы
Аватара пользователя
Sfinx
Сообщения: 672
Зарегистрирован: 21 июн 2011, 23:40
Откуда: Odessa
Контактная информация:

Re: WebRTC Asterisk падает при трафике более 40 активных зво

Сообщение Sfinx »

А смысл ? По трейсу виден явный race между вызовами pjsip и старого стека. В данный момент pjsip используется только для изначально отсутсвующего функциоанала типа ice/stun и т.д. Смысл в разборе architect трупа от скрещивания ужа с ежом никакого нет. Скажем так - очередной костыль сваять можно, но это врядли кому то уже интересно ;)
Rus

-----------
SfinxSoft
http://sfinxsoft.com
alfox84
Сообщения: 3
Зарегистрирован: 10 мар 2011, 23:09

Re: WebRTC Asterisk падает при трафике более 40 активных зво

Сообщение alfox84 »

В Debian 7.0.2 походу проблема в либе libsrtp0-dev,

удалили либу, поставили последнюю версию:
git clone https://github.com/cisco/libsrtp/
cd libsrtp
CFLAGS="-fPIC" ./configure --enable-pic && make && make install

Пересобрали астер, падать перестало, но походу появились утечки памяти :)
Аватара пользователя
Sfinx
Сообщения: 672
Зарегистрирован: 21 июн 2011, 23:40
Откуда: Odessa
Контактная информация:

Re: WebRTC Asterisk падает при трафике более 40 активных зво

Сообщение Sfinx »

это к srtp либе отношения не имеет - race происходит когда несколько тредов пытаются некорректно работать с одним обьектом. в данном случае - выделение и особождение обьекта ice.
Rus

-----------
SfinxSoft
http://sfinxsoft.com
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH