Страница 1 из 3

Failed to get 160 samples from read factory

Добавлено: 08 ноя 2013, 14:44
dendroid
Приветствую! Нужна помощь, может кто-то сталкивался:
Имеем: ubuntu 12.04, asterisk 1.8.6.0, freepbx 2.10
Все входящие и исходящие звонки пишутся.
Один - два раза в неделю астериск зависает (замерзает), не реагирует на комманды. Спасает только убийство процесса и повторный запуск (service asterisk restart - не отрабатывает).
в консоли под дебагом льются вот такие сообщения:

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

[2013-11-05 01:11:12] DEBUG[32284]: audiohook.c:260 audiohook_read_frame_both: Failed to get 160 samples from read factory 0x7fdae0017b00
[2013-11-05 01:11:12] DEBUG[32284]: audiohook.c:227 audiohook_read_frame_both: Read factory 0x7fdae0017b00 and write factory 0x7fdae0018540 both fail to provide 160 samples
гугл подсказал, что проблема не только у меня, однако решение было найдено в 2011 году, я просмотрел выпущенный тогда патч и в версии 1.8.6.0 он уже добавлен. Однако проблема остается. И она связана именно с записью. Может кто-то знает решение проблемы или может натолкнуть на нужный путь? Видел http://forum.asterisk.ru/viewtopic.php?f=3&t=1029 - однако тема очень старая, поэтому решил написать новую, если не прав, могу перекинуть сообщение туда, а эту тему удалить.
Заранее спасибо!
PS: вот ссылки, которые могут пролить свет на проблему:
http://forums.asterisk.org/viewtopic.php?f=1&t=88239
https://issues.asterisk.org/jira/browse/ASTERISK-12324
http://asteriskforum.ru/viewtopic.php?p=65813

UPD: Пробовал на Asterisk 1.8.15-cert3, freepbx 2.10, ubuntu 12.04 - сообщение в консоли под дебагом остались. На зависание не проверял, так как нужно выводить полностью в работу для тестов. Может попробовать другой дистрибутив (Centos или Debian) ?
Установку проводил по http://wiki.freepbx.org/pages/viewpage. ... Id=1409028 . Только asterisk выбрал 1.8.15-cert3
Железо конечно слабое, однако звонок то всего один и поток записывается тоже всего один. Тестировал на внутренних звонках (звонил себе на вторую линию). Если звонить например в очередь, сообщения (Failed to get 160 samples ) остаются.

Re: Failed to get 160 samples from read factory

Добавлено: 08 ноя 2013, 15:07
Wapo
Сколько работаю с астером - ЗАМЕРЗАНИЕ возникало при проблемах с ДНС-сетью, ну а уж дальнейшее = лишь следствие.

Re: Failed to get 160 samples from read factory

Добавлено: 08 ноя 2013, 16:15
ded
Такое наблюдалось при записи на внешний USB диск.
Что за дисковая подсистема? Может быть что диск старый, и не SMART, и он сам по себе медленно пишет, а если ещё запись разговора туда - подтормаживает?

Re: Failed to get 160 samples from read factory

Добавлено: 08 ноя 2013, 17:36
dendroid
ded писал(а):Такое наблюдалось при записи на внешний USB диск.
Что за дисковая подсистема? Может быть что диск старый, и не SMART, и он сам по себе медленно пишет, а если ещё запись разговора туда - подтормаживает?
На рабочем "сервере" стоит WD5003AZEX ( Black серия, 7200 об.мин., 64Mb буфер). На нем стоит asterisk 1.8.6.0.
Тестирую на wd5000aads ( Green серия, 5400 об.мин., 32 буфер). На нем пробовал asterisk 1.8.6.0 и 1.8.15 cert-3.
Сегодня попробую на VPS хостинге (hetzner.de), чтобы исключить влияние железа. Позже попробую Debian и Centos.

Re: Failed to get 160 samples from read factory

Добавлено: 08 ноя 2013, 17:40
dendroid
Wapo писал(а):Сколько работаю с астером - ЗАМЕРЗАНИЕ возникало при проблемах с ДНС-сетью, ну а уж дальнейшее = лишь следствие.
Попробую отключить eth0, воткнуть usb модем, включить запись и позвонить на него. По идее так исключится влияние DNS. (Т.е все будет крутиться внутри сервера)

Re: Failed to get 160 samples from read factory

Добавлено: 08 ноя 2013, 17:55
ded
тогда надо srvlookup=no и резолвер тоже отключать, никаких FQDN в конфигах SIP.

Re: Failed to get 160 samples from read factory

Добавлено: 08 ноя 2013, 18:55
dendroid
тогда надо srvlookup=no и резолвер тоже отключать, никаких FQDN в конфигах SIP.
srvlookup=no -- отключен
BIND сервера нет. Вообще внешних SIP каналов нет. Звонки идут через шлюзы.
Host адреса прописаны цифрами.

UPD: При входящих через шлюзы или на USB модем в консоли валятся вот такие сообщения:

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

[2013-11-08 17:40:00] DEBUG[26892]: audiohook.c:239 audiohook_read_frame_both: Read factory 0x7f23240222f0 was pretty quick last time, waiting for them.
нашел похожую тему: http://forum.asterisk.ru/viewtopic.php?f=3&t=1223

Все же буду пробовать другие дистрибутивы.

Re: Failed to get 160 samples from read factory

Добавлено: 08 ноя 2013, 19:51
Sfinx
имеет смысл величить jitter buffer, походу его не хватает. и на всякий случай проверить стабильность таймера - если он плавает, будет та же хрень

Re: Failed to get 160 samples from read factory

Добавлено: 08 ноя 2013, 20:47
dendroid
имеет смысл величить jitter buffer, походу его не хватает. и на всякий случай проверить стабильность таймера - если он плавает, будет та же хрень
менял значения jitter buffer от 20 до 400 и jbresyncthreshold от 800 до 1200 - проблема осталась
по поводу таймера (не знаю сильно он плавает или нет):

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

It has been 1000 milliseconds, and we got 150565 timer ticks
It has been 1000 milliseconds, and we got 150522 timer ticks
It has been 1000 milliseconds, and we got 151145 timer ticks
It has been 1000 milliseconds, and we got 149463 timer ticks
It has been 1000 milliseconds, and we got 148250 timer ticks
It has been 1000 milliseconds, and we got 148712 timer ticks
И после каждого теста пишет: Using the 'timerfd' timing module for this test.
пока что не нашел как использовать этот модуль. Тут как я понимаю указаны максимальное кол-во тактов. Если выставлять например:

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

*CLI> timing test 10000
It has been 1000 milliseconds, and we got 10000 timer ticks
то всегда будет выдавать 10000 timer ticks

т.е вроде не плавает

Re: Failed to get 160 samples from read factory

Добавлено: 09 ноя 2013, 06:50
Sfinx
С таймерами целая история, во первых нужно определится что есть в железе :

cat /sys/devices/system/clocksource/clocksource0/available_clocksource

потом что использует Linux ядро:

cat /sys/devices/system/clocksource/clocksource0/current_clocksource

потом с какими опциями это ядро собрано. для астера с софтварным таймером убийственной является NO_HZ - ее обычно ставят в дистрах для экономии энергии. нужно или юзать специально заточенное ядро или собрать ztdummy и не париться - он работает через RTC interrupt.