博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
针对Sip Proxy的多路压力测试程序
阅读量:4120 次
发布时间:2019-05-25

本文共 2111 字,大约阅读时间需要 7 分钟。

本压力测试基于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

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

 

 

转载地址:http://nwppi.baihongyu.com/

你可能感兴趣的文章
2009年33所高校被暂停或被限制招生
查看>>
GlassFish 部署及应用入门
查看>>
iWatch报错: Authorization request cancled
查看>>
iWatch报错: Authorizationsession time out
查看>>
如何运行从网上下载的iWatch项目详细步骤.
查看>>
X-code7 beta error: warning: Is a directory
查看>>
Error: An App ID with identifier "*****" is not avaliable. Please enter a different string.
查看>>
X-code beta 开发iWatch项目,运行没有错误,但是某些操作一点就崩,而且找不错误的原因场景一
查看>>
Xcode 报错: Extra argument in call
查看>>
iTunes Connect 上传APP报错: Communication error. please use diagnostic mode to check connectivity.
查看>>
#import <Cocoa/Cocoa.h> 报错 Lexical or Preprocessor Issue 'Cocoa/Cocoa.h' file not found
查看>>
`MQTTClient (~> 0.2.6)` required by `Podfile`
查看>>
X-Code 报错 ld: library not found for -lAFNetworking
查看>>
Bitcode
查看>>
If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
查看>>
3.5 YOLO9000: Better,Faster,Stronger(YOLO9000:更好,更快,更强)
查看>>
iOS菜鸟学习--如何避免两个按钮同时响应
查看>>
How to access the keys in dictionary in object-c
查看>>
iOS菜鸟学习—— NSSortDescriptor的使用
查看>>
hdu 3787 hdoj 3787
查看>>