本文共 3020 字,大约阅读时间需要 10 分钟。
环境搭建ok后我们开始使用tsung进行性能测试
其实tsung提供了一系列的模板,包括所有tsung支持的服务类型的xml模板
cd /usr/local/tsung/share/doc/tsung/examples/可以直接拷贝模板xml,稍微修改即可使用
1. 客户端
tsung-1.0.dtd源码文件中对客户端参数的定义
2. 服务端
tsung-1.0.dtd源码文件中对服务参数的定义
3. 负载配置
tsung有一个概念叫到达阶段(arrival phase),它有以下几个参数:这里定义了2个用户到达阶段(arrival phase)
第一阶段的总时长是1分钟,在这一分钟里,每秒钟会有1000个虚拟用户来访问 第二阶段的总时长是2分钟,在这两分钟里,每秒钟会有10000个虚拟用户来访问4. 添加会话
所谓会话,就是每个用户先后做哪些事情,对于HTTP的测试,当然就意味着发请求,收响应 tsung对每个会话会自动管理cookie在这个例子里,每个用户的会话会做两件事:
此次主要目的是模拟websocket的请求,那根据业务请求包组装sessions数据如下
{ "cmd":"ping","seq":"","data":"","extend":""}
此时在服务端并没有产生对应的数据,查看服务端的日志,发现服务端并没有收到消息,因为数据包的问题,消息直接被网关拦截了
了解具体的数据情况,该websocket对处理进行了一层处理
那是否可以直接发送二进制数据呢?tsung1.7.0版本提供了直接发送binary的数据
由frame属性设置binary和text两种格式
080110001a95020a2432336630653432632d323436662d346131312d616533302d306331633336613730336332122039323938653065626539323334613162393665333264666437623364333835651a00220e31383831333239363134387474742a003289017b2261757468223a7b2275736572223a7b2274696d657374616d70223a2231353837343638353237383032222c227369676e6174757265223a224439374332444441334534364535453644343832453945384545383441463933222c22746f6b656e223a223862663035636233373630343464343139386661656664336364613439653538227d7d7d3a09756e646566696e65644a1c3c6769746272616e63683e2f312e322e302e3c676974636f756e743e5004581e
此时数据可发送至服务端,建立连接connect可以成功,但是未能解析二进制文件,该数据为text格式
在客户端进行抓包
tcpdump -i any host xxx.xxx.xxx.xxx or port 8080 -v -n -w dump.pcap
抓取的数据包
TCP握手成功,connect数据包ok,发送出去message的数据包为文本格式尝试修改type为raw格式发送数据
此时请求又被网关层给拦截
查看使用文档
Example with Websocket as a session type:
{ "user":"user", "password":"password"} ok { "uid":"%%_uid%%", "data":"data"} { "key":"value"}
根据以上请求格式各种修改,均失败
此后又尝试修改加服务type为ssl等方式,均失败
查看tsung的 信息,没有相关的解决
查看tsung的
目前使用的tsung-1.7.0版本已是是最新的包,且在2017年更新,此请求只能暂时搁置了,后续看是否可以修改erlang源码解决该问题或者通过自定义插件的方式实现转载地址:http://vptvf.baihongyu.com/