秒级注册压测是一种比较常见的场景,网上也有很多类似的,其实脚本难度不大改改官方的也可以,主要是要熟悉命令,知道命令代表的是什么意思;
执行命令
# remote_ip: freeswitch服务ip
# remote_port: freeswitch服务端口
# -inf [csv]: 指定注册用户信息, freeswitch-sipp/data/sip_account.csv
# -sf [xml]: 指定注册脚本, freeswitch-sipp/script/register/qps/qps.xml
# -m: 设置本次最大执行数,到了自动关闭
# -r 2: 执行个数
# -rp 1000: 多少毫秒执行2个
# -trace_screen: 当程序结束时候打印统计信息并弹出屏幕
# -trace_msg: 打印中记录发送和接收的 SIP 消息
# -trace_err: 结束时打印错误消息
sipp [remote_ip]:[remote_port] -inf [csv] -sf [xml]
-r 2 -rp 1000 -m 2 -trace_msg -trace_screen -trace_err
csv
SEQUENTIAL
test001;
test002;
注册脚本
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="branch_client">
<!-- 表示每 500ms 重传输注册消息 -->
<send retrans="500">
<![CDATA[
REGISTER sip:[remote_ip] 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: 1 REGISTER
Contact: sip:[field0]@[local_ip]:[local_port]
Content-Length: 0
Expires: 3600
]]>
</send>
<!-- 表示 SIPp 期望收到服务端 401 的消息 -->
<recv response="401" auth="true" next="1"></recv>
<!-- 表示每 500ms 重传输注册消息 -->
<send retrans="500">
<![CDATA[
REGISTER sip:[field0]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port]
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]
[field1]
Content-Length: [len]
Expires: 3600
]]>
</send>
<!-- 表示 SIPp 期望收到服务端 200 的消息 -->
<recv response="200"></recv>
<!-- 响应时间分类为 -->
<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
<!-- 呼叫时长进行分类 -->
<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario>