遇到的疑问以及自己的思考(不一定对,希望知道的人可以说两句:)

1、 当并发线程数设置越大时(100--200--300),TPS 反而越低,但前后台都没有报错,服务器的资源占用也可以忽略不计

个人认为原因:因为网络带宽原因限制了,当线程数在增加时,同样时间内请求发送的数量越来越少,压力并没有到后台服务器,时间都消耗在了上传文件这个阶段

2、 每次当并发数到 400 左右的时候(不管是单台机压 400,或者是五台客户机搞分布式压 400,又或者是每个客户机独立同时向服务器发 80),总是会报错,错误信息都是一样
java.io.IOException: Error writing to server

在网上也看了一些解决办法,但还是没有解决,比如修改 jmeter.bat 文件里的 HEAP 的大小

个人认为原因:每个请求时间过长,2-3 分钟发不一个请求,导致启动的连接都在客户机,发不出去,然后端口占用完了,才会报错,因为每次报错的时候,端口都用到了 6W 开头了,如图,但我用 netstat -ano 去查看,一共才几百个端口,不知道用什么命令可以把所有占用的端口都显示出来,不知道为什么 4W 多的端口用了几十个,一下子就跳到了 5W 多的端口,然后又跳到 6W 多的端口,希望知道的高手能指点一下像我这种小白

脚本编写:

因为没有涉及 cookie,token,加密之类的操作,就简单的一个上传文件的接口,所以脚本也很简单,
看图就 OK
1、直接在测试计划中新建一个线程

2、然后在线程组中新建一个 http 请求

3、填写需要压测的接口和参数等内容

4、 到 Advanced 标签页选择请求的方式,通过 Java 方式发送请求

5、这样就可以发送请求到服务器了,但我们还想看到我们发过去的请求内容和服务器返回给我们的内容,所以要添加一个监听器类型的控件,比如 “查看结果树”

6、添加完查看结果树后,我们发送一次请求,然后到结果树查看发送过去的请求和服务器返回的数据


7、绿色代表成功,红色代表失败,如果失败,要排查就我们发过去的内容和服务器返回的内容来定位,具体问题具体分析

8、下一步,我们再添加一个断言,根据我们自己的定义来判断,什么时候是成功,什么时候是失败


9、再下一步,我们再添加一个监听类型,统计我们的压测结果,比如聚合报告

10、 执行之后,我们就可以在聚合报告里查看结果

11、参数化

添加一个 CSV 文件配置

然后在本地新建一个 csv 文件,里面填上要上传文件的路径

最后修改一下发送请求的文件

12、关于多台机发布式时的问题:

要在 jmeter.properties 里配置打开标准模式,如图


↙↙↙阅读原文可查看相关链接,并与作者交流