В ходе работы над Asterisk бывает полезно знать сколько одновременных звонков может обработать ваш сервер без потери качества сервиса. Я покажу как можно провести стресс-тестрирование сервера Asterisk.
Для этого нужно будет иметь два сервера Астериск. Один будет получать звонки, а другой будет их генерировать. Между двумя серверами уже должен быть проброшен SIP/IAX — транк. Генерировать звонки будем спомошью call. файлов. В упрощенном варианте можно запустить все на одном.
Скрипт-генератор звонков.
#!/usr/bin/python # # Script - stress_test.py # Copyright (c) 2012 Mihail Belobrov. # # # import os import random import shutil import time def create_call_file(operator): #Operator 1 if operator == 1: phone_member = '2434'+str(random.randint(10,80)) phone_user = '029'+str(random.randint(303014,780020)) #Operator 2 elif operator == 2: phone_member = '2434'+str(random.randint(10,80)) phone_user = '065'+str(random.randint(300301,880420)) call_file = open('/tmp/'+phone_user,'w') print 'call from '+phone_user+' to member '+phone_member call_file.write("Channel: Local/"+phone_member+"@stress_test\n") call_file.write("Context: stress_test\n").. call_file.write("Extension: play\n") call_file.write("CallerID: "+phone_user+"\n") call_file.close() shutil.move('/tmp/'+phone_user, '/var/spool/asterisk/outgoing/'+phone_user) #generation file for x in range(1000): time.sleep(1) operator = random.randint(1,2) create_call_file(operator)
Настройки для Астериска в extensions.conf
[stress_test] exten => _X.,1,NoOP(--> call from ${CALLERID(number)} to ${EXTEN} <--) exten => _X.,n,Dial(SIP/${EXTEN}@trunk_to_ast) exten => _X.,n,Hangup() exten => play,1,NoOP(--> call from ${CALLERID(number)} to ${EXTEN} <--) exten => play,n,Answer() exten => play,n,MusicOnHold() exten => play,n,Hangup()
Стресс тестирование заключается в следующем. Скрипт «stress_test.py» генерирует каждую секунду по одному звонку, всего 1000 штук. После того как на удаленном сервере Астериск подняли трубку, начинает бесконечно проигрываться музыка. Тем самым имитируется реальный звонок.
Удачного тестирования и долгой работы вашим Серверам :).