发表于: 2020-02-20 23:03:08

6 1277


今天完成的事:
1、jmeter压测。
(1)服务器jmeter查看、压测。
使用本地jmeter生成“.jmx”文件,上传到服务器,使用jmeter进行压测,结果报错。
百度说是,jmeter版本不一致,本地的jmeter是5.2版本,服务器的是5.1.1版本,如果要在服务器上压测,就需要安装jmeter,于是询问师兄,说是直接在本地压测即可。
(2)本地jmeter压测。
首先是创建一个线程组,然后添加http请求,如下,测试登录接口。

首先,可以不查看日志即可得到结果,就是添加结果树。

http请求中,将入参的参数形式改变了,不使用json格式的参数。

请求头中,也修改了“Content-Type”为“application/x-www-form-urlencoded;charset=UTF-8”。

询问过前端后,他们说post请求都是用的这个请求头,我之前还以为是“application/json”呢。。这里不太熟悉,回头好好看看。

压测结果,都在200ms以下,并且TPS为223/sec,远远大于100/sec。

查看结果树,随意挑选了一些,都是请求成功。
但是测试账号列表接口时,显示没有登录。。
就算是修改入参参数的格式也没有用。

这里是添加的http授权管理器,因为其他的后台接口都需要登录后,才能访问,我认为这是可以进行登陆授权的设置管理器。但是实际上貌似并不是。

添加了登录接口的url,并且还添加了账号名称admin、密码。

但是结果都是未登录,随意抽取的几个都是显示未登录。

这个方法失败!

2、压测账号接口,跨线程获取登录token,并设置全局变量后压测。
(1)登录接口,跨线程获取token。
首先将登录接口单独放在一个线程,新建一个setUp线程组。这样登录就只执行一次就行了。
这时就有个问题,在进行登录后调用其他接口,是一个线程的一个账号登录后,多线程调用,还是多个线程的账号登录,多线程调用。。

如果是后者,那就不需要跨线程获取token了,而是每个线程都登录,都有个自己的token,在调用本线程的其他接口。。

新建好http请求后,再新建json提取器,也有说使用正则提取器也可以。

这里 $ 就是返回的JSON对象, $.data.token 就是获取json对象中的data数据中的token,都是以键值对的形式获取。然后赋值给 token 变量。

而后赋值全局变量。新建Bean shell后置处理器。

${__setProperty(Token,${token},true)} ,将token赋值给Token。其中的true可以删除,测试后发现没有什么影响。

最后就是如何使用全局变量的token。

在线程组下有个HTTP信息头管理器,可以设置获取全局变量 Token,使用 ${__P(Token,)} ,即可获取Token。
这样设置后,线程组下面的所有业务接口都能复用第一次登录的token了。

测试后发现,成功请求。

进行压测尝试,先测试两个接口。结果如下,比较慢。
(2)压测账号列表接口。
因为之前师兄说压测为防止相互影响,一次只测试一个接口。于是分开测试。
测试列表,TPS倒是达到了,但是响应时间200ms以上的也不少。
(3)压测账号数据回显接口
更慢了。。
3、修改代码,添加缓存。
先用角色管理尝试,在列表查询处,添加缓存。
但是如果有按条件查询,就无法使用缓存了,因为变化太多,只能是全部的列表使用缓存。
所以如果是账号列表,就不能使用缓存了。
这里就是添加角色时,需要传递权限列表,则需要缓存。
而当插入角色时,需要添加成功后,删除缓存中的角色列表,并且,不限制角色重名,因为压测需要,没办法不重名。
另外,删除角色、更新角色时,都需要删除缓存中的角色列表。
但是猴子说,一般这种实时数据没用过缓存,因为变化较快,随后说响应时间长可能是sql语句有问题,因为我没有用联表查询,相应的访问数据库次数就很多。
明天把账号管理的sql修改下,正好跟角色管理的缓存作对比。
明天计划的事:
1、修改sql语句,提高响应速度。
遇到的问题:
1、在进行登录后调用其他接口,是一个线程的一个账号登录后,多线程调用,还是多个线程的账号登录,多线程调用 ?
如果是后者,那就不需要跨线程获取token了,而是每个线程都登录,都有个自己的token,在调用本线程的其他接口。
2、在列表查询处,添加缓存。
但是如果有按条件查询,变化太多,怎么使用缓存?只能是全部的列表查询使用缓存。
收获:
1、jmeter压测。
(1)服务器jmeter查看、压测。
(2)本地jmeter压测。
2、压测账号接口,跨线程获取登录token,并设置全局变量后压测。
(1)登录接口,跨线程获取token。
(2)压测账号列表接口。
(3)压测账号数据回显接口。
3、修改代码,添加缓存。

返回列表 返回列表
评论

    分享到