您的位置:首页 > 其它

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

2009-07-20 16:50 162 查看
本压力测试基于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/***P 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/***P 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

因为内存受限制,不然成绩更高了,有些轻微的内存泄漏,内存会随着时间线性增长,不过正常使用情况下看不出来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: