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

Замерзает (зависает) Астериск 1.6.2.17.2

Добавлено: 03 ноя 2011, 11:34
mozaix
Замерзает (зависает) Астериск 1.6.2.17.2

Собственно сабж.
Астериск в процессах присутствует.
В консоли все пусто.
Перестает работать регистрация SIP-клиентов.
Невозможно выполнить исходящие вызовы, невозможно принять входящие вызовы.

В логах перед зависанием появляется большое к-во записей
audiohook.c: Read factory 0xb48aaf0 and write factory 0xb48b528 both fail to provide 160 samples

Все лечится тупой командой

service asterisk restart

Как избавиться от такого глюка?

Re: Замерзает (зависает) Астериск 1.6.2.17.2

Добавлено: 03 ноя 2011, 11:41
zzuz
Так зима на носу - холодно. Вы его к батареи поставьте, пусть согреется.

А по теме.. откуда и как собран сервис? Попробуйте пересобрать другую версию .

Re: Замерзает (зависает) Астериск 1.6.2.17.2

Добавлено: 03 ноя 2011, 12:04
ded
mozaix, возможно - проблема №53
http://asterisk.ru/news/53
Проверяется командами
dig http://www.ru
dig http://www.mycompany.net @my.dns.server
dig http://www.mycompany.net @8.8.8.8

Сообщение
audiohook.c: Read factory 0xb48aaf0 and write factory 0xb48b528 both fail to provide 160 samples
наталкивает на мысль о буксующей дисковой подсистеме, вследствие интенсивной записи разговоров, если диск медленный - будет такое.

Re: Замерзает (зависает) Астериск 1.6.2.17.2

Добавлено: 03 ноя 2011, 13:03
mozaix
Суть в том, что сам астериск, и два РАБОЧИХ днс сервера, расположены в одной локальной сети. Между ними нет никаких фаеволов.
Разрешается все ровно. Проблем нет никаких. Разговоров пишется много (200 пользователей, и каждый пишется).
Записи создаются на дисковой полке, подключенной к лезвию (на котором сам астериск и расположен).
В общем дисковая подсистема быстрая!
Зависает астериск иногда по нескольку раз в сутки.

Re: Замерзает (зависает) Астериск 1.6.2.17.2

Добавлено: 03 ноя 2011, 13:25
ded
Вопросов много. Ответов меньше.
http://lmgtfy.com/?q=audiohook.c%3A+Rea ... 60+samples
Задача в том, чтобы найти правильный.

дисковая полка, диски - fibre channel что ли? Тогда быстрые. :)
подключенной к blade - iSCSI? Fibre channel HBA?

Re: Замерзает (зависает) Астериск 1.6.2.17.2

Добавлено: 03 ноя 2011, 16:48
mozaix
Да уж искади в инете то и не один раз. Сюда обратились только потому, что везде люди задают ВОТ ТАКОЙ ЖЕ вопрос как и я, а ответов на эти вопросы нет.
Да у нас FC. Сама полка оборудована sas винтами - от нее в FC Switch от него уже в блейд через HBA.
Посему быстро.
Что делать то?
Блин вопрос то не праздный.
Фактиечские если бы были петли, то это было бы заметно по load average или еще какой другой криминал бы.
А тут к-во звонков не слишком большое, а виснет служба и все. И в логах на время зависания, т.е. с момента как она зависла и до момента как ее оживишь нет нифига. Сообщения, о которых я писал накапливаются ПЕРЕД появлением глюка. Может это накопительный баг.
Кто может помочь?

Re: Замерзает (зависает) Астериск 1.6.2.17.2

Добавлено: 03 ноя 2011, 18:32
ded
Вот кусок кода, ответственный за это

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

static struct ast_frame *audiohook_read_frame_both(struct ast_audiohook *audiohook, size_t samples)
{
        int i = 0, usable_read, usable_write;
        short buf1[samples], buf2[samples], *read_buf = NULL, *write_buf = NULL, *final_buf = NULL, *data1 = NULL, *data2 = NULL;
        struct ast_frame frame = {
                .frametype = AST_FRAME_VOICE,
                .subclass = AST_FORMAT_SLINEAR,
                .data = NULL,
                .datalen = sizeof(buf1),
                .samples = samples,
        };

        /* Make sure both factories have the required samples */
        usable_read = (ast_slinfactory_available(&audiohook->read_factory) >= samples ? 1 : 0);
        usable_write = (ast_slinfactory_available(&audiohook->write_factory) >= samples ? 1 : 0);

        if (!usable_read && !usable_write) {
                /* If both factories are unusable bail out */
                ast_debug(1, "Read factory %p and write factory %p both fail to provide %zd samples\n", &audiohook->read_factory, &audiohook->write_factory, samples);
                return NULL;
        }
Могу программеры что-то сказать по этому поводу?

Могут быть глюки уровня модулей НВА ядра Линукс.
Проверить например так:
1) воткнуть в Астериск USB флэшку, смонтировать, и перенсти для теста запись на неё. На день какой-нить 4ГБ хватит. Если проблемы не будет
2) попытаться подключить внешний USB-диск.
Несмотря на то, что на первый взгляд эти варианты медленнее, чем FC, нужно попробовать просто, чтобы обойти дрова другими дровами.
Как-то так.

Re: Замерзает (зависает) Астериск 1.6.2.17.2

Добавлено: 10 ноя 2011, 15:02
yuriyv
asterisk на виртуальном сервере установлен?

Re: Замерзает (зависает) Астериск 1.6.2.17.2

Добавлено: 16 ноя 2011, 20:09
jugatsu
Похоже всего лишь на обычный deadlock. Как собран asterisk? Что мешает попробовать новые версии 1.6.2.20 или 1.8.7.1? Пересоберите с DONT_OPTIMIZE и выполните соответствующие действия, указанные по ссылке https://wiki.asterisk.org/wiki/display/ ... +Backtrace. Но хочу разочаровать, даже грамотно собранный дебаг и открытие тикета на баг-трекере digium'а, вряд ли даст хоть какой-то результат, поскольку ветка 1.6.2.X уже не поддерживается https://wiki.asterisk.org/wiki/display/ ... k+Versions, так что любой баг, относящейся к версии 1.6.2.X будет проигнорирован. Предполагаемое решение: попробовать разные версии asterisk'а из ветки 1.6.2.X, например, последнюю 1.6.2.20, в надежде, что данный баг был исправлен. Или самый правильный вариант: собрать версию 1.8.7.1 в /opt с опциями DONT_OPTIMIZE и BETTER_BACKTRACE и мониторить поведение.

Re: Замерзает (зависает) Астериск 1.6.2.17.2

Добавлено: 16 ноя 2011, 20:17
ded
решение: попробовать разные версии asterisk'а из ветки 1.6.2.X, например, последнюю 1.6.2.20, в надежде, что данный баг был исправлен.
Моожет всё же 1.6.2.28?
Или самый правильный вариант: собрать версию 1.8.7.1 в /opt с опциями DONT_OPTIMIZE и BETTER_BACKTRACE и мониторить поведение.
Это из серии - нужно переустановить Windows.