Нужны советы по оптимизации и увеличению производительности
Откуда: Новосибирск
Сообщений: 39
|
Нужны советы по оптимизации и увеличению производительности
В народе ходят слухи, что на asterisk возможно обрабатывать до 300 одновременных звонков.
Реально вижу следующую картину:
Сервер: Dual-Core AMD Opteron(tm) Processor 1218
память: 2х1Gb нерегистровая DDR2 работает в dual channel
МB: Tyan S2925 Tomcat n3400B
Потоковая E1 плата: Cronyx Tau-PCI/4E1
Сервер занимается терминацией VoIP по SIP в традиционку E1
При 55 одновременных звонках uptime за одну минуту показывает ~0.6 процессов в очереди. Значит, при достижении критического для производительности значения среднего количества процессов в очереди 1, должно держаться ~ 90 звонков.
Как бы повысить это значение до 120, а лучше до 150? Что можно потюнить в плане софта и апгрейда железа?
|
Откуда: Нижний Новгород
Сообщений: 277
|
Re: Нужны советы по оптимизации и увеличению производительности
SIP то какой кодек пользует?
Памяти у Вас достаточно. С процессором все просто - чем мощней тем лучше.
Запускайте астериск с ключиком -p, это увеличит приоритет процесса. Как я понимаю будет достачно 120 одновременных звонков поскольку у Вас только 4 E1. Кстати не думаю что у Вас возникнут проблемы с терминацией 120 одновременных звонков в случае если пользуется G711 кодек. Я терминировал 92 канала (4xT1) на старом одно-процессорном Pentium 4 2400Mhz 512 Mb. Правда пользовал карту Digium TE405P. Также производительность сильно зависит от включенного inband DTMF detection (лучше выключить если не нужны inband DTMFы c E1, а со стороны SIPа пользуйте только telephone-events - rfc2833 ну или info если SIP агенты держат) и записи разговоров. Ну и поменьше логов.
|
Откуда: Москва
Сообщений: 3421
|
Re: Нужны советы по оптимизации и увеличению производительности
При 55 одновременных звонках uptime за одну минуту показывает ~0.6 процессов в очереди. Значит, при достижении критического для производительности значения среднего количества процессов в очереди 1, должно держаться ~ 90 звонков.
Откуда у Вас информация о линейной зависимости между числом звонков и показателем average load?
300 звонков по VoIP далеко не предел, но у Вас стоит карта на 4E1, которая не зависимо от нагрузки (по идее) отбирает ресурсы.
Возьмите sipp, создайте 100, 150, 200 и тд звонков и звоните и эмпирически оценивайте качество, и нагрузку смотрите.
|
Откуда: Новосибирск
Сообщений: 39
|
Re: Нужны советы по оптимизации и увеличению производительности
simax: SIP то какой кодек пользует?
Как я понимаю будет достачно 120 одновременных звонков поскольку у Вас только 4 E1.
Сервер работает ещё с несколькими sip гейтами и коммутирует sip-абонентские устройства, поэтому оптимальным значением было бы 150 звонков.
simax:
Кстати не думаю что у Вас возникнут проблемы с терминацией 120 одновременных звонков в случае если пользуется G711 кодек.
Да, его использую. g729 будет жрать больше проца?
simax: Также производительность сильно зависит от включенного inband DTMF detection (лучше выключить если не нужны inband DTMFы c E1, а со стороны SIPа пользуйте только telephone-events - rfc2833 ну или info если SIP агенты держат) и записи разговоров.
Записей нет. Остальное уточню.
|
Откуда: Нижний Новгород
Сообщений: 277
|
Re: Нужны советы по оптимизации и увеличению производительности
Larchen: g729 будет жрать больше проца?
Намного если нет транскодера (специальной платы от Digium). Ну и без транскодера лицензия на пользования G729 стоит по моему 10$ за канал. Ну и если у Вас весь RTP идет по локалки или нет проблем с шириной канала то смысла в G729 нету - только качество голоса потеряете.
|
Откуда: Новосибирск
Сообщений: 39
|
Re: Нужны советы по оптимизации и увеличению производительности
litnimax:
Откуда у Вас информация о линейной зависимости между числом звонков и показателем average load?
Предположение, за не имением более точной информации о характере зависимости :). Количество потоков процесса asterisk вроде бы растёт линейно с количеством звонков (по крайней мере, на известном мне интервале, судя по графикам cacti ).
litnimax:
300 звонков по VoIP далеко не предел, но у Вас стоит карта на 4E1, которая не зависимо от нагрузки (по идее) отбирает ресурсы.
Зависимость есть. Чем больше звонков, тем больше она генерит прерываний в секунду. А при какой конфигурации ПО и аппаратуры у Вас было 300 по VoIP?
litnimax:
Возьмите sipp, создайте 100, 150, 200 и тд звонков и звоните и эмпирически оценивайте качество, и нагрузку смотрите.
Не слышал раньше о sipp. Я попробую, но не так просто устраивать тесты на системе под коммерческой нагрузкой.
|
Откуда: Москва
Сообщений: 3421
|
Re: Нужны советы по оптимизации и увеличению производительности
Посмотрите asterisk_V1-4-11_performance.htm
Также я когда-то описал как использовать sipp asteriskworld.ru/wiki/testing-asterisk-call-load-with-sipp.ru.
Зависимость есть. Чем больше звонков, тем больше она генерит прерываний в секунду. А при какой конфигурации ПО и аппаратуры у Вас было 300 по VoIP?
Я не инженер, но мне кажется плата считывает содержимое буфера каждого тайм-слота независимо от нагрузки. Таким образом всегда потребляя IRQ. Вы промониторьте /proc/interrupts... Вспомнил пример, где chan_ss7, ну очень realtime приложение, ругался на buffer underrun что-то типа того.
[Sep 19 22:30:49] NOTICE[25524] mtp.c: Excessive poll delay 5985!
[Sep 19 22:40:49] NOTICE[25524] mtp.c: Excessive poll delay 5355!
[Sep 19 18:41:08] NOTICE[10930] l4isup.c: Write buffer full on CIC=4 (wrote only 0 of 160), audio lost.
[Sep 19 18:41:08] NOTICE[10930] l4isup.c: Write buffer full on CIC=4 (wrote only 0 of 160), audio lost.
И это практически без нагрузки вообще (один звонок). Пример показывает, что буфера карточки считываются постоянно.
но не так просто устраивать тесты на системе под коммерческой нагрузкой.
Очень просто, главное аккуратно и продуманно. Не стоит врубать нагрузку сразу в +200 звонков. Увеличивайте кол-во звонков с шагом в 5-10, постоянно отслеживая качество связи.
|
Откуда: Новосибирск
Сообщений: 39
|
Re: Нужны советы по оптимизации и увеличению производительности
За мануалы большое спасибо.
Плата точно генерит прерывания в зависимости от загрузки. В этом легко убедиться запустив dstat при разгруженной и нагруженной системе. Без нагрузки на плату в секунду происходить 2-3 тысячи прерываний, с нагрузкой - 6-7-8тысяч.
|
Откуда: Киев
Сообщений: 749
|
Re: Нужны советы по оптимизации и увеличению производительности
у меня при похожем конфиге(с 729, на дуале, с 4е1) звук был прекрасный до 2.7 лоад.
правда ядро было скомпилено с 1000 hz таймером.
количество звонков до 230 гдето...
карта может использовать механизм отложеных прерываний(кстати и должна).в этом случае нагрузка растет нелинейно совсем. к тому же карта почти 100% использует dma.
как очень сильный вариант "потюнить" замените сип регистратор и нат на openser/mediaproxy. ибо астериск при сип звонках очень много "блокировок" делает, когда keep-alive шлет и регистрации. при этом загрузка проуа маленькая а лоад растет. в 1.4 лучше чем в 1.2, но до opensera все равно очень далеко.
|
Откуда: Новосибирск
Сообщений: 39
|
Re: Нужны советы по оптимизации и увеличению производительности
Нет, OpenSer для этого проекта не годится. Сип клиентам нужны различные трансверы, конфы, парковки, перехваты и т.п. Замучаешься это в openser.cfg программировать :).
|
|