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

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

0

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

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

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

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

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

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

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

спросил Jun 24 '13

obamo Gravatar obamo
115 13 3 11

Comments

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

octopas (Jun 24 '13)edit

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

awsswa (Jun 24 '13)edit

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

octopas (Jun 24 '13)edit

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

obamo (Jun 24 '13)edit

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

awsswa (Jun 24 '13)edit

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

obamo (Jun 25 '13)edit

1 Ответ

2

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

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

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

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

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

rtcachefriends=yes
rtupdate
=no

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

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

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

ответил Jun 24 '13

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

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

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

obamo (Jul 11 '13)edit

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

meral (Jul 11 '13)edit

Ваш ответ

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 ленту новостей

Статистика

Задан: Jun 24 '13

Просмотрен: 1,073 раз

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

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

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