【tsung】tsung模拟请求
发布日期:2021-06-30 21:35:32 浏览次数:2 分类:技术文章

本文共 3020 字,大约阅读时间需要 10 分钟。

环境搭建ok后我们开始使用tsung进行性能测试

模板

其实tsung提供了一系列的模板,包括所有tsung支持的服务类型的xml模板

cd /usr/local/tsung/share/doc/tsung/examples/

在这里插入图片描述

可以直接拷贝模板xml,稍微修改即可使用

xml文件内容

1. 客户端

  • host:客户端的host地址,需要配置host信息,在上面文章中有说明配置方式,但这里强调的是即使客户端开在本机上,Tsung也会通过ssh远程开启进程,而且不会使用密码
  • cpu:尽量把cpu的值设得和该主机的CPU数量相等,Tsung保证会把这些进程分配到不同的CPU内核上,上面的例子中定义了一个客户端,在localhost这台主机上开4个进程同时发送请求
  • maxusers:设置这个客户端最多可同时虚拟多少个用户,注意,如果这个数值大于你的ulimit-Sn,则tsung会开多个系统进程来确保这个数值

tsung-1.0.dtd源码文件中对客户端参数的定义

2. 服务端

tsung-1.0.dtd源码文件中对服务参数的定义

3. 负载配置

tsung有一个概念叫到达阶段(arrival phase),它有以下几个参数:

  • 当前阶段是第几个阶段(phase)
  • 一个阶段持续多长时间(duration和unit)
  • 在这个阶段里,每多长时间产生多少(虚拟)用户

这里定义了2个用户到达阶段(arrival phase)

第一阶段的总时长是1分钟,在这一分钟里,每秒钟会有1000个虚拟用户来访问
第二阶段的总时长是2分钟,在这两分钟里,每秒钟会有10000个虚拟用户来访问

  • phase:阶段,填数字即可,系统会按顺序执行,可是设置多个阶段组合场景
  • duration:持续时段,填数字即可,单位unit="minute"设置,可以是second(秒)、minute(分钟)、hour(小时)
  • arrivalrate:虚拟用户数,一般最大800(根据机器的性能),实际执行可能超过,也可能达不到(需要根据调试得到最佳参数)

4. 添加会话

所谓会话,就是每个用户先后做哪些事情,对于HTTP的测试,当然就意味着发请求,收响应
tsung对每个会话会自动管理cookie

在这个例子里,每个用户的会话会做两件事:

  1. 发送一个HTTP 1.1的GET请求到/,并接收响应
  2. 收到响应后,sleep(模拟阅读网页的时间),时间从2-10秒随机

websocket请求

此次主要目的是模拟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源码解决该问题或者通过自定义插件的方式实现

转载地址:https://lluozh.blog.csdn.net/article/details/105740147 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【接口平台设计】用例智能推荐
下一篇:【tsung】tsung分布式运行

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月08日 12时32分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章