sipp3.6对freeswitch进行压力测试
一、安装sipp
1、下载地址:
https://github-production-release-asset-2e65be.s3.amazonaws.com/13161657/99df6100-9216-11e9-9439-d9c9f5284379?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200904%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200904T024024Z&X-Amz-Expires=300&X-Amz-Signature=df9c9aeba4b219e5a3c6ea4cd0cbb76785900829a5294ac6d72f5c7ba4409f9b&X-Amz-SignedHeaders=host&actor_id=30207023&key_id=0&repo_id=13161657&response-content-disposition=attachment%3B%20filename%3Dsipp-3.6.0.tar.gz&response-content-type=application%2Foctet-stream
2、安装依赖包
yum install ncurse*
yum install openssl*
yum install lksctp*
yum install libpcap*
3、安装sipp3.6
tar -xvzf sipp-xxx.tar.gz
cd sipp
./configure --with-sctp --with-pcap --with-openssl
make
4、验证安装
sipp -v
二、环境设置
1、修改系统openfile限制
(1)vim /etc/security/limits.conf,添加:
* soft nofile 32768
* hard nofile 65535
(2)vim /etc/pam.d/login,添加:
session required /lib/security/pam_limits.so
(3)命令行输入:
ulimit -s unlimited
ulimit -a
2、修改freeswitch配置
(1)cd /etc/freeswitch/autoload_configs,编辑vim switch.conf.xml
# 修改
<param name="max-sessions" value="100000"/>
<param name="sessions-per-second" value="10000"/>
(2)修改拨号正则,cd /etc/freeswitch/dialplan,修改某个profile:
<?xml version="1.0" encoding="utf-8"?>
<include>
<extension name="Balance_load">
<condition field="destination_number" expression="^([2-6][0-9][0-9][0-9])$">
<action application="export" data="dialed_extension=$1"/>
<action application="set" data="sip_h_History-Info=${sip_history_info}"/>
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="callId=${uuid}"/>
<action application="export" data="execute_on_answer=record_session /home/Records/${caller_id_number}.wav" />
<action application="bridge" data="{absolute_codec_string=pcma,callId=${uuid}}sofia/webphonetest/$1@${local_ip_v4}:56148" />
</condition>
</extension>
</include>
其中,@172.200.115.13:56148是被叫IP和端口
(3)添加default配置文件。
cd /etc/freeswitch/directory/default
# 3000 5999为自己需要的用户
for i in `seq 2000 5999`; do sed -e "s/1000/$i/g" 1000.xml > $i.xml ; done
(4)添加白名单,无需鉴权
cd /etc/freeswitch/autoload_configs
vim acl.conf.xml # 进入编辑模式修改
<list name="domains" default="deny">
<!-- domain= is special it scans the domain from the directory to build the ACL -->
<node type="allow" domain="$${domain}"/>
<!-- use cidr= if you wish to allow ip ranges to this domains acl. -->
<node type="allow" cidr="192.168.200.0/24"/>
<!--新增此行. -->
<node type="allow" cidr="10.10.81.0/24"/>
</list>
三、配置文件
1、uac.csv
SEQUENTIAL
2000;2050;[authentication username=2000 password=1234]
2001;2051;[authentication username=2001 password=1234]
2002;2052;[authentication username=2002 password=1234]
2003;2053;[authentication username=2003 password=1234]
2004;2054;[authentication username=2004 password=1234]
2005;2055;[authentication username=2000 password=1234]
2006;2056;[authentication username=2001 password=1234]
2007;2057;[authentication username=2002 password=1234]
2008;2058;[authentication username=2003 password=1234]
2009;2059;[authentication username=2004 password=1234]
2010;2060;[authentication username=2000 password=1234]
2011;2061;[authentication username=2001 password=1234]
2012;2062;[authentication username=2002 password=1234]
2013;2063;[authentication username=2003 password=1234]
2014;2064;[authentication username=2004 password=1234]
2015;2065;[authentication username=2000 password=1234]
2016;2066;[authentication username=2001 password=1234]
2017;2067;[authentication username=2002 password=1234]
2018;2068;[authentication username=2003 password=1234]
2019;2069;[authentication username=2004 password=1234]
2020;2070;[authentication username=2000 password=1234]
2021;2071;[authentication username=2001 password=1234]
2022;2072;[authentication username=2002 password=1234]
2023;2073;[authentication username=2003 password=1234]
2024;2074;[authentication username=2004 password=1234]
2025;2075;[authentication username=2000 password=1234]
2026;2076;[authentication username=2001 password=1234]
2027;2077;[authentication username=2002 password=1234]
2028;2078;[authentication username=2003 password=1234]
2029;2079;[authentication username=2004 password=1234]
2030;2080;[authentication username=2000 password=1234]
2031;2081;[authentication username=2001 password=1234]
2032;2082;[authentication username=2002 password=1234]
2033;2083;[authentication username=2003 password=1234]
2034;2084;[authentication username=2004 password=1234]
2035;2085;[authentication username=2000 password=1234]
2036;2086;[authentication username=2001 password=1234]
2037;2087;[authentication username=2002 password=1234]
2038;2088;[authentication username=2003 password=1234]
2039;2089;[authentication username=2004 password=1234]
2040;2090;[authentication username=2000 password=1234]
2041;2091;[authentication username=2001 password=1234]
2042;2092;[authentication username=2002 password=1234]
2043;2093;[authentication username=2003 password=1234]
2044;2094;[authentication username=2004 password=1234]
2045;2095;[authentication username=2000 password=1234]
2046;2096;[authentication username=2001 password=1234]
2047;2097;[authentication username=2002 password=1234]
2048;2098;[authentication username=2003 password=1234]
2049;2099;[authentication username=2004 password=1234]
2、uas.csv
SEQUENTIAL
2050;;[authentication username=2050 password=1234]
2051;;[authentication username=2051 password=1234]
2052;;[authentication username=2052 password=1234]
2053;;[authentication username=2053 password=1234]
2054;;[authentication username=2054 password=1234]
2055;;[authentication username=2050 password=1234]
2056;;[authentication username=2051 password=1234]
2057;;[authentication username=2052 password=1234]
2058;;[authentication username=2053 password=1234]
2059;;[authentication username=2054 password=1234]
2060;;[authentication username=2050 password=1234]
2061;;[authentication username=2051 password=1234]
2062;;[authentication username=2052 password=1234]
2063;;[authentication username=2053 password=1234]
2064;;[authentication username=2054 password=1234]
2065;;[authentication username=2050 password=1234]
2066;;[authentication username=2051 password=1234]
2067;;[authentication username=2052 password=1234]
2068;;[authentication username=2053 password=1234]
2069;;[authentication username=2054 password=1234]
2070;;[authentication username=2050 password=1234]
2071;;[authentication username=2051 password=1234]
2072;;[authentication username=2052 password=1234]
2073;;[authentication username=2053 password=1234]
2074;;[authentication username=2054 password=1234]
2075;;[authentication username=2050 password=1234]
2076;;[authentication username=2051 password=1234]
2077;;[authentication username=2052 password=1234]
2078;;[authentication username=2053 password=1234]
2079;;[authentication username=2054 password=1234]
2080;;[authentication username=2050 password=1234]
2081;;[authentication username=2051 password=1234]
2082;;[authentication username=2052 password=1234]
2083;;[authentication username=2053 password=1234]
2084;;[authentication username=2054 password=1234]
2085;;[authentication username=2050 password=1234]
2086;;[authentication username=2051 password=1234]
2087;;[authentication username=2052 password=1234]
2088;;[authentication username=2053 password=1234]
2089;;[authentication username=2054 password=1234]
2090;;[authentication username=2050 password=1234]
2091;;[authentication username=2051 password=1234]
2092;;[authentication username=2052 password=1234]
2093;;[authentication username=2053 password=1234]
2094;;[authentication username=2054 password=1234]
2095;;[authentication username=2050 password=1234]
2096;;[authentication username=2051 password=1234]
2097;;[authentication username=2052 password=1234]
2098;;[authentication username=2053 password=1234]
2099;;[authentication username=2054 password=1234]
3、regclient_set_c_port.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="regclient">
<Global variables="c_port" /> <nop hide="true">
<action>
<assignstr assign_to="EXP" value="3600" />
</action>
</nop> <send>
<![CDATA[
REGISTER sip:[remote_ip] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: <sip:[field0]@[remote_ip]>;tag=acknnkkg.[call_number]
To: <sip:[field0]@[remote_ip]>
Call-ID: [call_id]
CSeq: 1 REGISTER
Contact: <sip:[field0]@[local_ip]:[$c_port]>
Max-Forwards: 70
Subject: Reg Performance Test
user-agent: SIPp client
Expires: [$EXP]
Content-Length: 0
]]>
</send> <recv response="401" optional="true" auth="true" next="auth" >
</recv> <recv response="403" optional="true" next="END">
</recv> <recv response="404" optional="true" next="END">
</recv> <recv response="200" next="END" timeout="5000">
</recv> <label id="auth" />
<send retrans="500">
<![CDATA[
REGISTER sip:[field0]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: [field0] <sip:[field0]@[remote_ip]:[remote_port]>;tag=[call_number]
To: [field0] <sip:[field0]@[remote_ip]:[remote_port]>
Call-ID: [call_id]
CSeq: 2 REGISTER
Contact: sip:[field0]@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Reg Performance Test
user-agent: SIPp client
Expires: [$EXP]
[field2]
Content-Length: 0 ]]>
</send> <recv response="200" next="END" timeout="5000">
</recv> <label id="END"/>
<nop hide="true">
</nop> <!--<Reference variables="microseconds,seconds" />--> <!-- Definition of the response time repartition table (unit is ms) -->
<ResponseTimeRepartition value="50, 200"/> <!-- Definition of the call length repartition table (unit is ms) -->
<CallLengthRepartition value="500, 5000"/> </scenario>
4、caller_with_auth.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd"> <scenario name="caller_with_auth">
<!--执行命令样例:sipp -sf caller_with_auth.xml xx.x.x.xx:5060 -p 5066 -inf caller.csv -m 1 -d 10000 -oocsn ooc_default-->
<!--发送INVITE消息,设定重传定时器为1000ms,同时启动定时器invite-->
<send retrans="1000" start_rtd="invite">
<![CDATA[
INVITE sip:[field1]@[remote_ip] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: "[field0]" <sip:[field0]@[remote_ip]>;tag=[call_number]zhg8
To: "[field1]"<sip:[field1]@[remote_ip]>
Call-ID: [call_id]
CSeq: 1 INVITE
Contact: <sip:[field0]@[local_ip]:[local_port]>
User-Agent: SIPp client mode version [sipp_version]
Allow: INVITE,PRACK,ACK,UPDATE,CANCEL,BYE,OPTIONS,INFO,SUBSCRIBE,REFER,NOTIFY
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: [len] v=0
o=SIPp [pid][call_number] 8[pid][call_number]8 IN IP[local_ip_type] [local_ip]
s=SIPp Normal Call Test
t=0 0
m=audio [media_port] RTP/AVP 0 8
c=IN IP[media_ip_type] [media_ip]
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=ptime:20
a=sendrecv
]]>
</send> <recv response="100" optional="true">
</recv> <!-- <recv response="401" auth="true"> -->
<!-- </recv> --> <!-- 部分呼叫鉴权可能为407 -->
<!-- <recv response="407" option="true" auth="true">
</recv> <send>
<![CDATA[
ACK sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch-3]
From: "[field0]" <sip:[field0]@[remote_ip]>;tag=[call_number]zhg8
To: "[field1]"<sip:[field1]@[remote_ip]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 1 ACK
Contact: <sip:[field0]@[local_ip]:[local_port]>
Max-Forwards: 70
Subject: normal call scenario
user-agent: SIPp client mode version [sipp_version]
Content-Length: 0
]]>
</send> <send retrans="1000" start_rtd="invite">
<![CDATA[
INVITE sip:[field1]@[remote_ip] SIP/2.0
[last_Via:]
From: "[field0]" <sip:[field0]@[remote_ip]>;tag=[call_number]zhg8
To: "[field1]"<sip:[field1]@[remote_ip]>
Call-ID: [call_id]
CSeq: 2 INVITE
[field2]
Contact: <sip:[field0]@[local_ip]:[local_port]>
User-Agent: SIPp client mode version [sipp_version]
Allow: INVITE,PRACK,ACK,UPDATE,CANCEL,BYE,OPTIONS,INFO,SUBSCRIBE,REFER,NOTIFY
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: [len] v=0
o=SIPp [pid][call_number] 8[pid][call_number]8 IN IP[local_ip_type] [local_ip]
s=SIPp Normal Call Test
t=0 0
m=audio [media_port] RTP/AVP 0 8
c=IN IP[media_ip_type] [media_ip]
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=ptime:20
a=sendrecv ]]>
</send> <!--1xx响应均为可选接收消息,且接收到临时响应后,即可停止invite定时器的计时-->
<!--收到4xx/5xx错误响应后,直接进入呼叫失败-->
<!-- <recv response="100" optional="true" rtd="invite">
</recv> <recv response="183" optional="true" rtd="invite" next="normal">
</recv> <recv response="403" optional="true" rtd="invite" next="err_ack">
</recv> <recv response="407" optional="true" rtd="invite" next="err_ack">
</recv> <recv response="415" optional="true" rtd="invite" next="err_ack">
</recv> <recv response="480" optional="true" rtd="invite" next="err_ack">
</recv> <recv response="486" optional="true" rtd="invite" next="err_ack">
</recv> <recv response="500" optional="true" rtd="invite" next="err_ack">
</recv> <recv response="503" optional="true" rtd="invite" next="err_ack">
</recv> -->
-->
<recv response="180" optional="true" rtd="invite" next="normal">
</recv> <label id="normal"/>
<recv response="200" rtd="invite">
<action>
<ereg regexp="m=audio ([0-9]*)"
search_in="msg"
check_it="true"
assign_to="junk,callee_media_port" />
</action>
</recv> <nop hide="true"> </nop> <send>
<![CDATA[
ACK sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: "[field0]" <sip:[field0]@[remote_ip]>;tag=[call_number]zhg8
To: "[field1]"<sip:[field1]@[remote_ip]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 2 ACK
Contact: <sip:[field0]@[local_ip]:[local_port]>
Max-Forwards: 70
Subject: normal call scenario
user-agent: SIPp client mode version [sipp_version]
Content-Length: 0
]]>
</send> <!--使用rtp_stream循环播放PCMA音频
<nop hide="true">
<action>
<exec rtp_stream="pcap/g711a.pcap,-1,0"/>
</action>
</nop>
-->
<!--使用rtp_stream循环播放PCMU音频
<nop hide="true">
<action>
<exec rtp_stream="pcap/g711u.pcap,-1,0"/>
</action>
</nop>
--> <!--使用play_pcap单次播放PCMA音频-->
<nop hide="true">
<action>
<exec play_pcap_audio="pcap/g711a.pcap"/>
</action>
</nop>
<!--使用play_pcap单次播放PCMU音频
<nop hide="true">
<action>
<exec play_pcap_audio="pcap/g711u.pcap"/>
</action>
</nop>
--> <!--媒体流传输完毕后,暂停发送BYE结束呼叫,在执行命令中增加参数-d 指定暂停时间:如-d 10000暂停10秒-->
<pause /> <send start_rtd="bye">
<![CDATA[
BYE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: "[field0]" <sip:[field0]@[remote_ip]>;tag=[call_number]zhg8
To: "[field1]"<sip:[field1]@[remote_ip]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 3 BYE
Max-Forwards: 70
Subject: normal call scenario
Content-Length: 0
]]>
</send> <recv response="200" rtd="bye" next="END">
</recv> <!--异常结束,复用err_ack流程-->
<label id="err_ack"/> <send>
<![CDATA[
ACK sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
[last_Via:]
From: "[field0]" <sip:[field0]@[remote_ip]>;tag=[call_number]zhg8
To: "[field1]"<sip:[field1]@[remote_ip]>[peer_tag_param]
[last_Call-ID:]
CSeq: 2 ACK
Max-Forwards: 70
Subject: normal call scenario
user-agent: SIPp client mode version [sipp_version]
Content-Length: 0
]]>
</send> <!--正常结束-->
<label id="END"/>
<nop hide="true">
</nop> <!--如果存在定义了但未被使用的变量,可以在下面语句的双引号中增加,避免运行时报错-->
<Reference variables="junk,callee_media_port" /> <!--definition of the response time repartition table (unit is ms) -->
<ResponseTimeRepartition value="50, 200,1000,2000,4000,10000"/> <!--definition of the call length repartition table (unit is ms) -->
<CallLengthRepartition value="500, 1000, 10000"/> </scenario>
5、callee_with_bye.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd"> <scenario name="callee_with_bye">
<!--用于模拟局内被叫侧用户的正常业务流程
媒体类型:PCMU
呼叫挂机:主叫方(60秒超时后主动发BYE拆话)--> <!--执行命令样例:sipp -sf callee_with_bye.xml -p 5068--> <!--定义全局状态机,如果收到OPTIONS消息,则跳转至options标签处-->
<recv request="OPTIONS" optional="global" next="options">
</recv> <recv request="INVITE">
<!--参数caller_num、callee_num和caller_tag用于主叫未挂机,BYE接收超时主动发BYE的流程-->
<action>
<ereg regexp="sip:(.*)@(.*)>;tag=(.*)"
search_in="hdr"
header="From: "
check_it="true"
assign_to="junk,caller_num,domain,caller_tag" >
</ereg>
<ereg regexp="sip:(.*)@.*>"
search_in="hdr"
header="To: "
check_it="true"
assign_to="junk,callee_num" >
</ereg>
</action>
</recv> <!--增加间隔20ms,避免偶现系统不发送100响应的问题-->
<pause hide="true" milliseconds="20"/> <send>
<![CDATA[
SIP/2.0 100 Trying
[last_Via:]
[last_From:]
[last_To:]
[last_Call-ID:]
[last_CSeq:]
Contact: <sip:[local_ip]:[local_port];transport=[transport]>
Content-Length: 0
]]>
</send> <!--增加间隔20ms,避免偶现系统不发送180响应的问题-->
<pause hide="true" milliseconds="20"/> <send>
<![CDATA[
SIP/2.0 180 Ringing
[last_Via:]
[last_From:]
[last_To:];tag=[call_number]
[last_Call-ID:]
[last_CSeq:]
Contact: <sip:[local_ip]:[local_port];transport=[transport]>
Content-Length: 0
]]>
</send> <!--设置发送200后等待ACK的重传周期为1秒,如果1秒内收不到ACK则进行200的重传-->
<send retrans="1000" start_rtd="ack">
<![CDATA[
SIP/2.0 200 OK
[last_Via:]
[last_From:]
[last_To:];tag=[call_number]
[last_Call-ID:]
[last_CSeq:]
Contact:<sip:[local_ip]:[local_port];transport=[transport]>
Content-Type: application/sdp
Content-Length: [len] v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=-
c=IN IP[media_ip_type] [media_ip]
t=0 0
m=audio [media_port] RTP/AVP 0 8
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=ptime:20
]]>
</send> <!--设置等待ACK的超时定时器为30秒,如果30秒内收不到ACK则呼叫超时失败而结束-->
<recv request="ACK" rtd="ack" timeout="30000" /> <!--使用rtp_stream循环播放PCMA音频
<nop hide="true">
<action>
<exec rtp_stream="pcap/g711a.pcap,-1,0"/>
</action>
</nop>
-->
<!--使用rtp_stream循环播放PCMU音频
<nop hide="true">
<action>
<exec rtp_stream="pcap/g711u.pcap,-1,0"/>
</action>
</nop>
--> <!--使用play_pcap单次播放PCMA音频-->
<nop hide="true">
<action>
<exec play_pcap_audio="pcap/g711a.pcap"/>
</action>
</nop>
<!--使用play_pcap单次播放PCMU音频
<nop hide="true">
<action>
<exec play_pcap_audio="pcap/g711u.pcap"/>
</action>
</nop>
--> <recv request="BYE" timeout="60000" ontimeout="send_bye"/>
<send next="END">
<![CDATA[
SIP/2.0 200 OK
[last_Via:]
[last_From:]
[last_To:]
[last_Call-ID:]
[last_CSeq:]
Contact: <sip:[local_ip]:[local_port];transport=[transport]>
Content-Length: 0
]]>
</send> <label id="options"/>
<send next="END" >
<![CDATA[
SIP/2.0 200 OK
[last_Via:]
[last_Call-ID:]
[last_From:]
[last_To:];tag=telpo-options[call_number]
[last_CSeq:]
[last_Contact:]
user-agent: SIPP version [sipp_version]
subject: reg performance
link-status: I am alive
Content-Length: 0 ]]>
</send> <!--主叫未挂机,BYE接收超时,被叫主动发BYE-->
<label id="send_bye"/>
<send start_rtd="bye">
<![CDATA[
BYE sip:[$caller_num]@[local_ip]:[local_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: "[$caller_num]" <sip:[$caller_num]@[local_ip]>;tag=[call_number]
To: "[$callee_num]"<sip:[$callee_num]@[local_ip]>;tag=[$caller_tag]
Call-ID: [call_id]
CSeq: 2 BYE
Max-Forwards: 70
Subject: normal call scenario
Content-Length: 0
]]>
</send> <recv response="200" rtd="bye">
</recv> <label id="END"/> <Reference variables="junk,domain" /> <!-- definition of the response time repartition table (unit is ms)-->
<ResponseTimeRepartition value="50, 200"/> <!-- definition of the call length repartition table (unit is ms)-->
<CallLengthRepartition value="500, 1000, 10000"/> </scenario>
四、命令
sipp -sf regclient_set_c_port.xml 172.29.50.60:5050 -i 172.29.50.60 -p 26000 -inf uac.csv -r 5 -rp 1000 -l 5 -m 100 sipp -sf regclient_set_c_port.xml 172.29.50.60:5050 -i 172.29.50.60 -p 56148 -inf uas.csv -r 5 -rp 1000 -l 5 -m 100 sipp -sf callee_with_bye.xml -i 172.29.50.60 -p 56148 -trace_err sipp -sf caller_with_auth.xml 172.29.50.60:5050 -i 172.29.50.60 -p 26000 -inf uac.csv -r 10 -rp 1000 -l 30 -m 100 -d 60000 -oocsn ooc_default -trace_err -aa # -r:并发数量
#-rp:并发的时间,单位ms,例如:-r 800 -rp 1000,就是每秒800并发
#-l:设置同时呼叫的最大数目;一旦达到此值,流量将被限制直到打的通话数下降;默认值3*call_duration(s)*rate
#-m:通话总数,当设置的通话数完成时,停止测试并退出;
#-d:自定义的通话时长,单位ms
#-aa:针对INFO, UPDATE 和 NOTIFY消息,进行200 OK自动回复应答;
sipp3.6对freeswitch进行压力测试的更多相关文章
- 使用SwingBench 对Oracle RAC DB性能 压力测试
我们可以使用swingbench这个工具对数据库性能进行压力测试,得到一些性能指标作为参考. SwingBench下载: http://www.dominicgiles.com/downloads.h ...
- linux压力测试工具stress
最近给PASS平台添加autoscaling的功能,根据服务器的负载情况autoscaling,为了测试这项功能用到了stress这个压力测试工具,这个工具相当好用了.具体安装方式就不说了.记录下这个 ...
- JMeter压力测试
Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件. ...
- kafka性能参数和压力测试揭秘
转自:http://blog.csdn.net/stark_summer/article/details/50203133 上一篇文章介绍了Kafka在设计上是如何来保证高时效.大吞吐量的,主要的内容 ...
- 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试
继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...
- Jmeter教程 简单的压力测试
Jmeter教程 简单的压力测试:http://www.cnblogs.com/TankXiao/p/4059378.html
- HTTP压力测试工具
HttpTest4Net是一款基于C#实现的和HTTP压力测试工具,通过工具可以简单地对HTTP服务进行一个压力测试.虽然VS.NET也集成了压力测试项目,但由于VS自身占用的资源导致了在配置不高的P ...
- 微软压力测试工具 web application stress
转自 http://www.cnblogs.com/tonykan/p/3514749.html lbimba 铜牌会员 这里给广大的煤油推荐一个web网站压力测试工具.它可以用来模拟多个用户操作网 ...
- 使用Microsoft Web Application Stress Tool对web进行压力测试
Web压力测试是目前比较流行的话题,利用Web压力测试可以有效地测试一些Web服务器的运行状态和响应时间等等,对于Web服务器的承受力测试是个非常好的手法.Web 压力测试通常是利用一些工具,例如微软 ...
随机推荐
- 焦大:seo思维光年(下)seo操作如何度量化
http://www.wocaoseo.com/thread-57-1-1.html 如果不能度量就无法进行改进,所以度量化或数据化是网站分析和网站研究必须进行的一个方面,seo也不能例外.我在上篇文 ...
- windows环境安装vue-cli及webpack并创建vueJs项目
1. 安装node.js 2. 如果安装的是旧版本的 npm,可以通过 npm 命令来进行版本升级,命令如下: npm install npm -g npm网站服务器位于国外,所以经常下载缓慢或出现异 ...
- 【Go语言入门系列】(八)Go语言是不是面向对象语言?
[Go语言入门系列]前面的文章: [Go语言入门系列](五)指针和结构体的使用 [Go语言入门系列](六)再探函数 [Go语言入门系列](七)如何使用Go的方法? 1. Go是面向对象的语言吗? 在[ ...
- sqlmap 的 --forms之理解
对于一个页面的form表单中的数据进行注入测试 方法有三个 ①burp抓包 将数据储存为文本文件 然后 sqlmap中使用 -r 参数进行测试 ②使用 --data参数,将数据进行测试 ③直接使用- ...
- GreatRiver研讨会 | ARINC 818的应用及发展
想要实现ARINC 818?与旋极合作伙伴大河(Great River Technology 简称GRT)一起参加免费的网络研讨会吧!ARINC 818视频协议如今正应用在各大军工项目以及相关的核心研 ...
- Fragment的跳转
1. 设置主Fragment 其它fragment得到它就可以了. 1 val ft = fragmentManager?.beginTransaction() 2 val maiFrgmt = Ma ...
- 深入了解Netty【八】TCP拆包、粘包和解决方案
1.TCP协议传输过程 TCP协议是面向流的协议,是流式的,没有业务上的分段,只会根据当前套接字缓冲区的情况进行拆包或者粘包: 发送端的字节流都会先传入缓冲区,再通过网络传入到接收端的缓冲区中,最终由 ...
- [BUUOJ记录] [BJDCTF2020]EasySearch
前面的突破点考察swp泄露以及md5截断认证,最后一步考察ssi注入 进入题目是一个登陆页面什么提示都没有,工具扫了一下发现swp泄露,得到登录验证页面的源码: <?php ob_start() ...
- wsl 修改默认安装路径
如果已经装了,先删除 mklink /j C:\Users\XXXX\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rh ...
- 乔悟空-CTF-i春秋-Web-SQL
2020.09.05 是不是有些题已经不能做了--费了半天,到最后发现做不出来,和网上大神的方法一样也不行,最搞笑的有个站好像是别人运营中的,bug好像被修复了-- 做题 题目 题目地址 做题 尝试简 ...