基于FreeSWITCH软交换平台性能测试

一. 简介

为了确保语音外呼平台在高并发通话的情况下,仍可稳定获得服务器运行时的相关数据,依托跨平台开源软交换FreeSWITCH,进行语音外呼平台建设及相关性能测试,并据此分析并找出性能瓶颈,进一步提高系统的稳定性、可用性。
性能测试最关心两个问题-平台可以支持多少用户?最大支持多少用户同时通话?
与传统的TDM交换机相比,FreeSWITCH支持的最大用户数量几乎是无限。因为传统的TDM交换机中,每通电话都会占用一个物理的硬件端口,这是一个绕不开的限制;而FreeSWITCH是IP的,所以基本上它仅受服务器内存和网络以及网关数量的限制,可以很轻松地支持很大数量的用户。
与最大并发数相关的另一个指标是每秒能处理的呼叫数。一般来说,处理通话比较消耗资源的地方在于通话建立和释放阶段。通话建立阶段需要处理Session的建立,媒体协商等;通话释放阶段需要处理Session的释放、写话单等。而一旦通话建立后,双方互相收发媒体流,对系统资源的占用可以认为是个常数了。

二. FreeSwitch对呼测试
2.1首先,最简单的测试方法就是用两台FreeSwitch对着呼,设置两台FreeSwitch服务器,如A和B,它们的IP地址为172.X.X.A 和172.X.X.B,则可以在B上使用如下命令呼叫A,并在本端执行echo App:
Freeswitch> orginate sofia/external/[email protected]:5080 &echo
2.2我们直接呼叫A的5080端口,以避免认证。在A上的Public Dialplan中我们需要设置一个路由播放音乐:



 			     



2.3 为了能发起大量呼叫,我们在B上编写了一个Sell脚本,具体如下:

IP=172.X.X.A
CMD=”bigapi orginate sofia/external/[email protected]:5080 &echo”
for f in ‘seq 	1 100’ ; do
   for f in ‘seq 1 300’ ; do
fs_cli -x $CMD
           done
Sleep 1
       done

上述脚本使用两个for循环,内循环执行300次发起300次呼叫,然后停顿1秒,在发起300个呼叫,外循环控制循环次数。通话一旦建立便会一直处理通话状态,如果要控制通话的时长,可以在A的playback之前使用sched_hangup APP 设置60S后自动挂机,如下:


三. FreeSwitch压测
测试工具的安装:

  1. 一般进行大话务量测试的时候,sipp是安装在linux机器上的,windows系统也可以跑sipp,但是由于性能的因素,我们先说在linux的安装和使用;
  2. 首先在linux系统中穿件sipp账户,把tar格式的sipp上床到sipp账户的根目录解压。
  3. 进入到sipp的解压后的文件中,先执行./configure之后再make。
  4. 进入.bash_profile配置环境变量,把:/home/sipp/sipp放在bin后面。
    基于FreeSWITCH软交换平台性能测试_第1张图片

测试方法:
SIPP是一个很好的SIP测试工具,它可以对SIP协议以及服务器性能进行比较全面测试。首先还是对单台FS进行测试,SIPP可以运行在A服务器上,也可以运行在B服务器上,运行如下命令就可以了:
$ sipp -sn uac -r l -d 10000 -rtp_echo 172.X.X.A:5080
上述命令运行后,可以在键盘上的1,2,3,4等按键控制界面上的统计信息,包含呼叫次数,成功、失败次数和各种时长信息等,如下为20CPS的情况下,当前有2001个呼叫,目前已经成功进行了2139177次呼叫
基于FreeSWITCH软交换平台性能测试_第2张图片

四. 平台性能测试

  1. 测试工具采用Jmeter,运行环境Linux,对于呼叫首先需要注册分机,模拟环境下无法再本地登录上百个软电话并注册,所以通过JAVA编写程序sip-register注册程序模拟用户登录分机注册话机。
    基于FreeSWITCH软交换平台性能测试_第3张图片

    修改Conf.xml配置文件,用于模拟用户注册数据,修改如下配置后,并启动注册程序,模拟用户注册分机

  
      //   程序执行服务器地址
         172.30.X.X
//   Opensips注册服务器地址和端口号
         172.30.X.X:5060 
      //   程序端口号
       	 10001 
      //   起始分机号
          10000
      //   结束分机号,每个分机代表一个用户
          10700 
      //   分机密码
          123456 
       //   域名
          xxx.com

2.采用IVR自动应答模拟用户接通电话,并通话1分钟挂断。测试环境为2台基于FreeSWITCH搭建的软交换平台,为了能方便的发起大量呼叫,在Jmeter压测脚本设置多个线程组执行,停顿1S再次发起并发呼叫。

3.Jmeter模拟用户数
定义线程组数,模拟用户数
基于FreeSWITCH软交换平台性能测试_第4张图片
4.Jmeter模拟用户登录

配置连接的服务器地址以及端口号号,协议采用WebSocket和连接超时时间

基于FreeSWITCH软交换平台性能测试_第5张图片

Request Data动态获取配置数据,模拟用户数据
基于FreeSWITCH软交换平台性能测试_第6张图片
5. Jmeter模拟用户拨打电话
循环控制拨打轮数
在这里插入图片描述
动态获取CSV文件数据,发起拨打请求
基于FreeSWITCH软交换平台性能测试_第7张图片
6. Jemter模拟用户挂断
通过获取挂机事件判断挂断请求

在这里插入图片描述
7. 配置CSV文件
读取本地编写的配置文件
基于FreeSWITCH软交换平台性能测试_第8张图片
配置CSV文件内容,设置域名、坐席号、分机号、密码、被叫,数据量可根据需求进行调整
基于FreeSWITCH软交换平台性能测试_第9张图片
8.通过界面编写完成压测脚本并导出Call.jmx,放到运行的服务器执行命令,执行完成即可以获取测试结果。
./jmeter.sh -n -t Call.jmx -l 500.jtl

五. 性能测试报告
1.测试方法
2.500并发量,运行24H的Jmeter测试结果汇总图如下
在这里插入图片描述
2.600并发量,运行24H的Jmeter测试结果汇总图如下
在这里插入图片描述
3.700并发量,运行1H的Jmeter测试结果汇总图如下
在这里插入图片描述
六. 总结
上述性能测试模拟了用户登录后发起外呼的整个流程,模拟环境符合真实用户的操作。测试结果显示:性能测试未对服务器造成高度负载,服务器可以平稳运行,所有呼叫请求未发生异常。
从测试结果分析:用户对发起通话与挂断通话的平均响应速度很快,完全在用户正常值内,如果通话并发量继续加大,必定会影响系统性能(FS的CPU占用增加)。针对单台的处理能力,可以根具呼叫需求进行横向扩容,满足业务需求。

你可能感兴趣的:(高并发)