opensips 1.11 uac_regstrant timer error 100% cpu load
При большом количестве записей от 150, начинаются проблемы с регистрацией, причина в моём случае в SRV lookup – это когда для домена сначала определяется SRV запись и если её нет, то тогда отдаётся обычная.
В моём случае помогла смена dns серверов на 8.8.8.8 и на 4.4.4.4.
11.09.2018load data local infile не работает
При попытке добавить данные из файла в Mysql 5.5 выдаёт следующее: ERROR 1148 (42000): The used command is not allowed with this MySQL version
Чтобы не вносить изменения в конфигурацию mysql достаточно выполнить команду:
set global local_infile = ‘ON’;
Детали можно почитать в статье.
| Posted in SQL запросы, Проблемы при настройке | No Comments »
Load Balancing SIP
UAC – > LB -> (PROXY1 | PROXY2 | … ) -> UAS
Задача: раскидать звонки между sip proxy, сначала на PROXY1, в случае его недоступности на PROXY2.
В идеале если хочется распределять нагрузку между несколькими прокси серверами, то нужно делать LB в режиме stateless (использовать функцию forward() совместо с модулем dispatcher) однако в таком случае нет возможности сделать failover в случае падения одного из проксей, т.к. response нельзя поймать в отдельный блок. (хотя возможно разместив код в разделе onreply_route… надо будет проверить).
Сначала учтем ситуацию что в сообщении уже содержится route и вызовем функцию loose_route. без нее вы рискуете на некоторых звонках, это зависит от вашего окружения, получить зацикливание сообщений ACK. Нужно обязательно проверить, чтобы loose вызывался для ACK сообщений и участвующих в диалоге, а не для первых сообщений в диалоге, т.к. это может привести к пробеганию через ваш прокси трафика на чужие сервера, либо на поставщиков услуг, что страшнее, т.к. это сразу минус бабки.
Ниже представлен конфиг:
request_route {
if (loose_route()) { #Если сообщение содержит Route: то функция выдаст 1. Если его там нет, то 0. Здесь мы проверяем, есть ли в сообщении Route и если да, то…
xlog(“L_INFO”,”ACK TRansported…”); #Выводим в лог любую хрень полезную для понимания
t_relay(); #Оправляем сообщение согласно этому заголовку Route.
exit; #Завершаем выполнение скрипта, т.к. больше LB делать ничего не надо.
}
if (!ds_select_domain(“1”, “8”)) # Здест мы пользуемся функцией которая выберет для нас адрес прокси (proxy1) и подставит его в URI (первая строчка в SIP сообщении)
{
xlog(“L_ALERT”,”404 No route $ru”); # ВЫводим в лог сообщение елси ни один из проксей не доступен.
send_reply(“404″,”No route”); #Посылаем “клиенту” 404 сообщение, мол, нет возможности отправить вызов.
exit; # Завершаем скрипт
} else {
t_on_failure(“RTF_DISPATCH”); # Если таки прокси для сообщения определен, то привязываем ответ к разделу “RTF_DISPATH”, там мы поймаем ответ, и если он говорит о проблеме с прокси, то отправим сообщение на другой прокси.
xlog(“L_ALERT”,”Passed dispatcher $ru via $du $rm”); # Запишем в лог информацию о том, что сообщение будет отправленно на $ru.(при вызове функции ds_select_domain $ru меняется на новый
route(RELAY); # собственно отправляем сообщение в раздел где оно отправится к $ru.
}
}
| Posted in Без рубрики, Готовые решения | No Comments »
| Posted in opensips | No Comments »