CooCare客户端压力测试环境 - housekeeper-software/coocare GitHub Wiki
目的
用于在云端模拟一定数量的CooCare客户端进行服务器的压力测试。 测试端可以通过websocket连接给压测服务器发送测试指令。
websocket连接配置
连接地址: ws://xx.xx.xx.xx:18080/coocare
启动压测
连接上服务器之后,发送如下的json:
{
"cmd":"start",
"communicationServer":"192.168.180.70:10888", //通讯服务器地址和端口,需要内网
"redis":"192.168.180.70:6379,ssc82893388", //redis服务器(如有密码需要设置)
"engineer":[ //这里是目标接收消息的工程师账号列表
"E0000000001",
"E0000000002",
"E0000000003",
"E0000000004",
"E0000000005",
"E0000000006",
"E0000000007",
"E0000000008",
"E0000000009",
"E0000000010"
],
"user":[ //这里是用户账号,压测服务器会到redis自动创建这些用户
{
"uid":"C0000000001",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000002",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000003",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000004",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000005",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000006",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000007",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000008",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000009",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000010",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
}
],
"message":{ //这里配置发送的消息类型和正文,text可以是一个json格式,也可以是个文本
"type":0,
"text":"this is a text message"
},
"threadCount":10, //测试线程数
"sendCount":1000, //每个用户发多少组消息,每组消息就是一个客户给工程师列表中的所有工程师发送一个消息
"sendInterval":10,//每次发消息的间隔,毫秒
"reportInterval":5000 //服务器多少毫秒报告状态
}
服务器返回:
{"cmd":"start","message":"","result":true}
{"cmd":"start","message":"","result":false}
停止测试
{"cmd":"stop"}
在redis中创建账号
{
"cmd":"create_user",
"redis":"192.168.180.70:6379,ssc82893388",
"user":[
{
"uid":"C0000000001",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000002",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000003",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000004",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000005",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000006",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000007",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000008",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000009",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
},
{
"uid":"C0000000010",
"token":"2ac7c68cb83333ab1f49c09c8b2572eb2e22d1dc",
"channel":"huiguanjia_dl"
}
]
}
服务器周期报告
报告分两种:
1. 定时报告
{"cmd":"report","recv_count":0.0,"send_ack_count":3800.0,"send_failed_count":0.0,"send_success_count":3810.0,"uid":"C0000000003"}
2. 某个客户端断开报告
{"cmd":"disconnect","code":0,"uid":"C0000000003"}
测试技巧
首先确定需要多少个线程,再者是多少个用户,用户会平均分配到这些线程中。
假设有10个用户,10个工程师,需要测试10000组,那么总计会发送消息:10*10*10000 =100万
我们可以通过报告知道发送的情况。
在接收端,也要核对消息总数,是否想匹配。
接收端收到的消息会包含一个 message_id,是一个int64的字段,表明消息的需要,从1到10000