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

ReSIProcate之各工程功能简单介绍 1、basicCall,basicMessage,basicRegister,resip_test测试用的 2、db_static Sleepy Cat开发的Berkeley DB 3、dum为Dialog UsageManager的缩写,包含UAC 阅读详情

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

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


 

 

移植resiprocate到嵌入式系统   首先你可以去www.sipfoundry.org和http://www.huisetalage.nl/sip/stacks.html了解一下resiprocate。  其次对于移植来说我觉得最重要的是编译器,如果编译器好的话,你所需要的只是交叉编译一下而已。  我移植的目标系统是Equator v6.0, Equator是一个DSP硬件厂商,v6.0是他们的一个开发套件,包括一套和gcc 2. 阅读详情

相关推荐

SIP协议之代理服务器

SIP代理服务器是路由SIP请求到用户代理服务端(UAS)和路由SIP应答到用户代理客户端(UAC)的SIP网元。一个请求可能会经过一个或多个代理到达UAS。每个代理都会执行路由决策、修改请求等操作,然后转发请求到下一个网元。应答会通过与请求一样的代理而与请求相反顺序的路径到达客户端。 SIP代理服务器分为有状态代理服务器和无状态代理服务器: 有状态代理服务器 是指代理在处理请求过程中维护UAC和UAS的事务状态。 无状态代理服务器: 是指代理在处理请求时不维护UAC或UAS的状态...

szkbsgy的专栏 3536

SIP语音对讲从零到整之(二)resiprocate编译(Linux,库用于Android)

写在前面:本想淅淅沥沥的将sip语音对讲的整个开发过程全部记录下来,但由于工作原因,确实没时间写。这距离上一次使用sip都过去一年多了,再次使用时,稍感陌生,一周使用下来,却发现对源码了解更深。          这次继续先聊聊编译resiprocate-1.10.2,Windows的就不用说了,直接用VS打开工程文件,直接就编译过了,Linux版本的也简单,这就不说了。现在主要说说在Linux...

学无止尽,谨言慎行! 2612

SIP呼叫压力测试(uac-sipp)

目录 1. 说明 2. 配置 3. 运行 4. 结果 1. 说明 使用此工具对UAS发起呼叫测试,发起指定的呼叫数,保持指定的并发数。 比如,指定发起总共1000个呼叫,并发数为100,则它会每1秒发起10个呼叫,直到保持100个呼叫就暂停发起呼叫。如果正在进行的100个呼叫其中10个先结束, 则会再发起10个新呼叫去保持100个并发,直到1000个呼叫发起完毕. 2. 配置 下载事先准备好的安装包:https://download.csdn...

cyncyncyncyncyn的博客 2314

ReSIProcate如何建立调试环境

我觉得大家对ReSIProcate存在一个误区。大多数人接触ReSIProcate基于应用的目的,考虑采用ReSIProcate服务于应用的时候总是要问ReSIProcate支持不支持某种应用,比如支持不支持语音编码啦,支持不支持电话多方视频会议啦,支持不支持MFC啦......甚至于在问这些问题之前对ReSIProcate是什么一无所知。在将ReSIProcate考虑入应用的候选行列之前,总该先

soliddream66的专栏 3059

【信息科学与工程学】【控制科学】第十二篇 微型计算机控制技术01

更精确的经典模型:I1在第5周期WB结束,I2最早可在第6周期进入EX,但I2在ID阶段就需要R1,因此I2的ID需在第6周期,而I1的WB在第5周期,所以I2的ID可以紧接在第6周期,但中间仍有一个stall(因为I1的EX结果要等到MEM之后才能转发给ID?有优先级继承后,Task_L被提升优先级,不会被Task_M抢占,阻塞时间缩短为Task_L剩余执行时间(9ms),仍可能超过10ms,但可通过调整任务周期或使用中断处理缓解。电感L=10μH,输出电容C=100μF,ESR=5mΩ。

weixin_49199313的博客 8638

ReSIProcate协议栈

最新的开源ReSIProcate协议栈 E文苦手就这里下吧

resiprocate: 开源的VoIP协议栈

是一个开源的VoIP协议栈,它提供了SIP、SDP等核心协议的支持,并且可以用于实现各种VoIP相关的应用程序和服务。 ## 什么是resiprocate? resiprocate是一个基于C++编写的开源VoIP协议栈。它的设计目标是提供一个高效、可靠、易于使用的API,以便开发人员可以快速地创建各种VoIP应用。resiprocate支持多种协议,包括SIP、SDP、TLS、HTTP等,并...

gitblog_00085的博客 794

resiprocate 日志文档

对resiprocate客户端与代理服务器理解的log,通过此log 清楚的理解sip协议。适合初学者

resiprocate编译测试

从github下载的源码,无论怎么配置boost的include路径,总是报编译错误。无奈,只能从tarball源码编译。tarball的源码从https://www.resiprocate.org/files/pub/reSIProcate/releases/下载,下载后解压到reciprocate目录下,然后执行下面命令就可以编译安装了。$ cd resiprocate $ ./configur

摩西的专栏 1759

ZEMAX学习第7天-手机镜头光学系统设计全过程案例

接下来对系统微调,依次缩小CRA和畸变,首先对CRA进行依次递减(39°、38°、37°、36°、35°),目前CRA角度40度,每次下降一度进行优化,利用MAXX加OPLT一起控制,控制小于35°。可以看出在标注的三个地方镜头曲率变化,导致PY=1的光线走向奇特,因此需要对矢高进行调整,按照标注的地方依次调整(从右到左)至传函变好,越靠近右边对其余视场影响越小。3.圆锥系数值较大,透镜形状怪异;一、第1,3镜子偏厚,第4镜子偏薄,45镜子间隔边缘偏小,第5片镜子中心厚度与边缘厚度相差较大,需要控制;

liningliwei的博客 1079

GPMC开发笔记(TI开发者推荐笔记)

因为gpmc(General-Purpose Memory Controller)是TI特有的驱动,gpmc的资料比较少,本人开发gpmc驱动算是摸了很多石头过河的。所以想通过这遍文章可以给也做GPMC驱动开发的后来者有一点参考价值。文章如有瑕疵也请各位批评改正。 1.GPMC介绍 gpmc主要用于与nandflash,norflash,fpga进行通信。在这里主要介绍gpmc16位数据和地址线不复用nor模式下的通信。 注意:在这种模式下gpmc_a[0]引脚是没法使用的 1.1GPMC信号线

weixin_44316996的博客 7507

Linux平台下reSIProcate项目使用

1、下载源代码,官方地址:http://www.resiprocate.org/Main_Page 2、执行:" ./configure --prefix=/usr/local/resip " --prefix=/usr/local/resip:的作用是控制生成的Makefile文件,在后续执行" make install " 时将项目头文件和库文件安装在/usr/local/resip路劲下...

1322

LabVIEW新手必看:5个工业自动化实战项目从零搭建(附完整代码)

本文为LabVIEW新手提供了5个从零开始的工业自动化实战项目指南,涵盖数据采集、状态机控制、PID闭环、振动监测及多站协同监控。通过详细的架构解析和关键代码片段,帮助读者快速掌握LabVIEW图形化编程的核心逻辑与工程化思维,并附完整代码实现。

agile9scrum的博客 1073

多线程服务器压力测试

多线程服务器压力测试 1、shell脚本 #! /bin/bash #!/bin/bash for((i=1;i<=1100;i=i+1)) do ./a & //后台执行,即不依次执行 echo "$i" sleep 0.03 done //统计"O" 和 "F" 出现的个数,因为做压力测试的时候连接成功我输出 //OK,错误的时候我用的F cat test.log | grep "F"|wc -l ca

守一座空城,等一个人 2087

帆软FineBI考试题

Flint 补录表,有批次删除功能。在分析主题内添加数据时能够选择批量添加数据。插件安装过程中有报错提示需要下载 Fine I for Excel 运行环境进行修复,修复完毕后重新安装插件。图例显示支持自定义设置,且图例标题支持隐藏显示。finebi中的指标如果想进行维度区间/真的自定义分组,不能直接拖拽到组建区域中需要先转化为维度方可进行指标分组。excel报表不支持分页。

Davina_yu的博客 1608

从数据到行动:客服运营必分析的8大核心维度

服务运营正从被动响应升级为数据驱动型战略体系。客服中心的海量交互数据能精准反映服务效能、客户体验及运营短板,关键在于实现数据的可视化与可操作化。本文系统剖析了八类核心数据指标:1)客户行为数据(CSAT/NPS/投诉内容);2)通话效率指标(AHT/接通率);3)服务质量(质检体系/情绪识别);4)坐席绩效(FCR/客户评价);5)流程与知识库(转接率/工单时效);6)渠道流量分析;7)异常预警机制;8)成本收益模型。通过构建多维数据分析体系,企业可在客户全生命周期管理中实现服务升级、风险防控与资源

2202_75469062的博客 1400

SIP代理服务器(2)

4请求转发 对于上一步确定的每一个目的地,proxy转发请求都遵循下列步骤: 1)、 拷贝一个接收到的请求 2)、 更新Request-URI 3)、 更新Max-Forwards头域 4)、 可选增加一个Record-Route头域 5)、 可选增加附加的头域 6)、 路由信息后处理 7)、 决定下一个节点地址、端口、通讯协议。 8)、 增加一个Via头域值 9)、 如果需要

学习是为了探索这个世界的本质 1308

伺服系统控制原理深度解析

摘要:本文系统阐述了伺服系统的控制原理与应用。首先介绍了伺服系统的定义、组成及其在工业自动化中的重要性;然后详细分析了反馈控制机制、稳定性判据和性能指标;重点推导了传递函数和状态空间两种数学模型,并通过LaTeX公式展示了二阶系统建模过程;进而对比了PID控制、状态反馈及自适应控制等方法的优缺点;最后结合数控机床等案例,验证了理论方法的有效性,并展望了伺服系统智能化发展趋势。全文兼顾理论深度与实践指导性,为控制工程领域提供了系统的技术参考。

技术工作者 1267

使用SIPP来进行SIP压力测试

1.   SIPp概述 1.1 介绍  SIPp是一个测试SIP协议性能的工具软件。这是一个GPL的开放源码软件。       它包含了一些基本的SipStone用户代理工作流程(UAC和UAS),并可使用INVITE和B YE建立和释放多个呼叫。它也可以读XML的场景文件,即描述任何性能测试的配置文件。它能动态显示测试运行的统计数据(呼叫速率、信号来回的延迟,以及 消息统计)。周期性地

单向街的夏天 6451

VTK GPU 加速渲染技术

/ 创建颜色工具// 创建立方体数据// 创建OpenGL映射器(注意使用vtkOpenGLPolyDataMapper而不是常规的vtkPolyDataMapper)// 启用VBO(顶点缓冲对象)// 声明几何体是静态的以获得最佳性能// 创建actor// 创建渲染器、渲染窗口和交互器renderWindow->SetWindowName("VTK自定义着色器示例");// 添加actor到渲染器。

深之JohnChen的专栏 1242

CAPL如何设置或修改CANoe TCP/IP协议栈的底层配置

MSS = MTU - tcpHeader - ipHeader,也就是MTU = MSS(1360) + tcpHeader(20) + ipHeader(20) = 1400,说明CAPL是可以动态设置网络底层配置参数的!然后在CAPL中设置此网卡MTU值为1400,然后创建UDP套接字,一次性发送2000个字节,在Trace窗口看看首帧报文二层Data的长度。所以我们还不能用UDP协议来验,应该用TCP协议来验,也就是在TCP三次握手时通过Tester的MSS值推导出自己的MTU值。

jasonj333 992

sip代理服务器、SIP用户代理服务器、sip服务器的区别和联系

sip代理服务器、SIP用户代理服务器、sip服务器的区别和联系

弘毅_hao的博客 2522

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SIP proxy and SIP gateway

SIP Proxy Server https://www.onsip.com/blog/sip-proxy-server A SIP proxy – sometimes also referred to as a SIP server or SIP proxy server – is mainly used by a SIP network to do call processing, but

The courage to be 3551

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: ReSIProcate如何建立调试环境
下一篇: C库风格字符串实现CString的Replace函数功能
soliddream66
博客等级 码龄19年 93粉丝 65原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值