针对Sip Proxy的多路压力测试程序

本压力测试基于ReSIProcate 1.5版本的basicCall项目修改,并且在ReSIProcate 1.5的Proxy测试通过,理论上应该也能针对其它Proxy进行压力测试。

 

如何使用

1、下载ReSIProcate 1.5

2、从http://www.pudn.com/downloads188/sourcecode/internet/tcp_ip/detail882742.html下载basicCall.zip文件解压,并将其中的basicCall.cxx覆盖到/resiprocate-1.5/resip/dum/test

3、编译运行basicCall Project

 

几点说明:

1、如果使用ReSIProcate的Proxy的话,注意几个参数

char* domains = "192.168.1.101";
char* interfaces = "sip:192.168.1.101:5060;timer-C=2;transport=udp" ;

int noChallenge = true;

 

2、目前默认10条线路同时测试,可以修改

const int LineCount = 10;

设置几条线路同时测试。

 

3、注意最好自己处理下TestInviteSessionHandler的onFailure,把throw注释掉

压力测试过程中Fail很正常,没什么影响。对Fail的关注可以放在临界测试中。

 

4、如果使用ReSIProcate的repro作为Proxy的话,并且压力测试程序与Proxy在同一台电脑的话,请在Proxy与UA的SipStack构造函数增加如下代码

for(int i=0;i<20;i++)
        mPorts.insert(12000+i);

 

5、测试过程中有几次出现sdp解析的bug,如果你也有这个问题的话,可以参考的修改如下:

把固定的sdp

 

 "v=0/r/n"

                        "o=1900 369696545369696545 IN IP4 192.168.2.15/r/n"

                       "s=X-Lite/r/n"

                        "c=IN IP4192.168.2.15/r/n"

                        "t=0 0/r/n"

                        "m=audio 8000RTP/AVP 8 3 98 97 101/r/n"

                        "a=rtpmap:8pcma/8000/r/n"

                        "a=rtpmap:3gsm/8000/r/n"

                        "a=rtpmap:98iLBC/r/n"

                        "a=rtpmap:97speex/8000/r/n"

                        "a=rtpmap:101telephone-event/8000/r/n"

                       "a=fmtp:101 0-15/r/n"

为实际中常见的sdp

 

  "v=0/r/n"

                        "o=uas 12345 0 INIP4 192.168.1.100/r/n"

                       "s=Stress_Testing/r/n"

                        "c=IN IP4192.168.1.100/r/n"

                        "t=0 0/r/n"

                        "m=audio 16002RTP/AVP 0 96/r/n"

                        "a=rtpmap:0PCMU/8000/r/n"

                        "a=rtpmap:96telephone-event/8000/r/n"                       

                        "a=fmtp:960-11/r/n"

 

6、添加了个线程类,目的是为了每个UA及DUM快速处理,避免原先放在一个while循环中的延时处理带来的重发包及Proxy内存持续增长。

 

ps.有问题请发邮件至lidongshen At gmail.com

 

update 2009-7-30 by sld

该压力测试程序已经稳定。反复的调试了一个月的样子。额定最大并发测试数为10,目前每个UA都放入了线程,所以10个并发数就需要20个线程,10路并发足以满足一般压力测试需求了。用WireShark抓的包,所有的Call都很完美,之前放在循环中做,并发数多的时候,很容易重发,以及Registration和InviteSession的Fail

 

update 2009 -8-12 by sld

这段时间做了些修改,修改变动细节比较多,而且多是些信息输出以及流程控制方面的,就不更新了,大家可以看实际需要做出修改,另外值得提醒的就是Register发送一次即可,之后Handler会自动定时发送的

目前在

CPU 230 @1.6GHZ 单核,1G ram电脑下测试,五路压力测试下

 

30小时 呼叫8万个Call 内存线性增长至(实际内存450M,虚拟内存450M),cpu 3%至5%波动,还算满意

至此公司基于ReSIProcate0.9的Proxy我更新到了基于ReSIProcate最新版,经过了严格的压力测试和临界测试,算是过关了,汗个~

 

update 2009-8-19 by sld

目前测试成绩为

 

Proxy压力测试成绩 持续时间157小时 322900 Call 同时5路测试

硬件
CPU 230 @1.6GHZ 单核
RAM 1G

因为内存受限制,不然成绩更高了,有些轻微的内存泄漏,内存会随着时间线性增长,不过正常使用情况下看不出来


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值