Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Asterisk realtime подтормаживает

0

Дело такое: астериск с режимом реалтайм на бд mysql. Абонентов порядка 500, все по SIP'у. Диалпланы большие с фантазиями (генерятся скриптами на основе настроек абонентов). Одновременных вызовов: 40-50 в рабочее время. Шуршит и радует.

Но, путем использования SIPP выяснилось (хотя, конечно, сначала пожаловались недовольные абоненты), что при наличии 7-8 одновременных запросов на вызов астериск, выполняя диалплан, начинает тормозить, прямо открываешь cli и видишь: ба, все строки диалплана вперемешку выполняются, но очень медленно. Спустя минуту-две-три астериск их пережевывает и люди дозваниваются.

Вопрос: как оптимизировать?

Уже проделанные действия:

  1. Уменьшить количество запросов к БД. Ок, раньше пользовался приложениями диалплана MYSQL, теперь использую ODBC. Некоторые запросы переделал. Кеширование есть. Вроде быстрее стало. Но 7-8 одновременных запросов и тормоза на месте.

  2. В дебаг-режиме выяснено, что астериск регулярно опрашивает БД на предмет диалплана. Примерно раз в минуту. Пробегает по всем switch'ам, дублируя запросы SQL. Что с этим делать и надо ли это?

Подскажите, пожалуйста, в какую сторону копать.

удалить закрыть спам изменить тег редактировать

спросил 2013-06-24 14:04:58 +0400

obamo Gravatar obamo
115 12 1 9

Comments

движок у MySQL не пробовали менять - InnoDB на MyISAM и наоборот...? еще попробуйте выключить srvlookup - поставьте "srvlookup=no"- у меня такое было, возможно тормоза при опросе обратного DNS.

octopas ( 2013-06-24 15:02:12 +0400 )редактировать

Raid тормозит ? пора переходить на более быстрый ?

awsswa ( 2013-06-24 15:54:33 +0400 )редактировать

для высоконагруженных систем по-моему лучший вариант - хотя-бы пара memcached серверов в связке с https://github.com/drivefast/asterisk-res_memcached. соответственно хранить пользовательские настройки там (а не весь диалплан) и делать периодический бэкап в peristent storage.

octopas ( 2013-06-24 18:31:02 +0400 )редактировать

InnoDB давно уже использую. srvlookup=no стоит. raid? тулза говорит, что даже до средних показателей еще далеко. за расширение астериска в memcached - спасибо, затестирую на стенде

obamo ( 2013-06-24 18:58:39 +0400 )редактировать

Господи, так вы еще это на простом компе гоняете ? я то думал что у вас сервер загибается он нагрузки .... 500 абонентов и вы не можете 2000$ выделить на сервер с аппаратным райдом ... а потом легенды ходят ип телефония это не надежно

awsswa ( 2013-06-24 20:23:30 +0400 )редактировать

2 awsswa: сервер нормальный, пожалуйста, без эмоций. на нагрузку я не жалуюсь, сервер в рабочее время максимум загружен по процессам и памяти процентов на 20-25 и работает достаточно надежно - за полтора года почти "ни единого разрыва" : )

obamo ( 2013-06-25 07:27:35 +0400 )редактировать

1 Ответ

2

выключить myisam. включить innodb(будет лочить построчно а не всю БД).

выставить кеширование запросов и кеш на таблицы в соответвии с вашей памятью.

выставить transaction_isolation=READ-UNCOMMITTED(выключает блокировки для чтения, надо понимать к чему приводит).

выставиьт корретно кеш для индексов и настроить индексы в соответвии с запросами от астериска(не должно читать БЕЗ индексов, не должно читать индексы с диска)

в sip.conf выставить

rtcachefriends=yes
rtupdate=no

переписать диалплан.

последнее даст максимальный еффект

ссылка удалить спам редактировать

ответил 2013-06-24 16:00:29 +0400

meral Gravatar meral flag of Ukraine
21228 24 19 169
http://pro-sip.net/

Comments

В общем, увеличение кеша дало эффект, но небольшой. Максимальный эффект дала замена динамического realtime на статический (переписывать диалплан не пришлось, только способ формирования данных в таблицах).

Еще есть мысль попробовать перенести таблицы динамического диалплана на engine = MEMORY при динамическом realtime, т.к. чем больше базы в памяти, тем вроде шустрее запросы динамического диалплана выполняются, не знаю даст ли это прирост производительности? Но пока руки не дошли на тестовом сервере поднять такую конфигурацию.

obamo ( 2013-07-11 08:11:13 +0400 )редактировать

не даст. фишка в том. что когда диалплан грузится в астриск внутри астриска он использует hashtree. а в базе его приходится читать по ключу. ну а когда загрузка через resconfigmysql то просто читает из базы вместо файла. остальное также как из файла.

meral ( 2013-07-11 14:30:56 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
1 закладка

подписаться на rss ленту новостей

Статистика

Задан: 2013-06-24 14:04:58 +0400

Просмотрен: 438 раз

Обновлен: Jun 24 '13

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.