当前位置:   article > 正文

Jmeter(5.6) TCP二次开发-接口返回500仍然使用长连接_jmeter tcp长连接

jmeter tcp长连接

背景


项目背景:终端设备每隔一定时间会发送日志到物联网平台,物联网平台接收日志后,进行处理,分析,得到可用数据。

技术采用:终端设备通过TCP协议发送日志,同一台设备未重启场景下,采用同一个长连接。

测试场景:需要对物联网平台进行性能测试,找出性能瓶颈。采用Jmeter工具,进行性能测试。

在以上背景下,对项目进行性能测试,测试过程中发现并发3000台时,TCP取样器发送失败率50%以上,排查原因:cannot create socket for XXX。于是在网上各种找资料,发现是连接数不够用,按理说服务器设置的TCP连接数有6万多,才并发3000台,而且采用的长连接,不至于不够。

后续,开发人员协助查看发送方的IP地址和端口,发现端口一直在变,也就是说 设置的长连接不起作用。又一通查找原因,原来 jmeter自带机制,TCP请求返回500时,会自动关闭连接。(项目中物联网平台对终端设备就是返回的500,并且没有任何返回值)

于是开启了我的Jmeter二开之路。。。。。

环境准备


JDK

需要安装JDK8以上,此处不做详细描述,大家可自己上网搜索

IntelliJ IDEA

作者采用IntelliJ IDEA工具,具体安装使用教程,可自行搜索

Jmeter源码

下载地址:Index of /dist/jmeter/source

下载完成后,解压到对应目录即可

gradle

下载地址:https://mirrors.cloud.tencent.com/gradle/

将压缩包解压后,需要配置环境变量,以及仓库目录。

用户变量中新建:GRADLE_USER_HOME

系统变量中新建:GRADLE_HOME

path路径中新建:%GRADLE_HOME%\bin

输入gradle -v 查看是否安装成功

Jmeter二次开发


以上环境都OK后,下面开始我们的二开之旅。

1.IDEA中打开jmeter源码项目,如下截图

2.找到对应的文件,修改如下几个地方

3.IDEA配置构建工具。使用本地gradle

4.找到文件目录下的gradle.properties文件,添加如下代码(依赖包下载国内镜像)

  1. buildscript {
  2. repositories {
  3. maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
  4. maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
  5. }
  6. dependencies {
  7. classpath 'com.android.tools.build:gradle:2.2.3'
  8. // NOTE: Do not place your application dependencies here; they belong
  9. // in the individual module build.gradle files
  10. }
  11. }
  12. allprojects {
  13. repositories {
  14. maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
  15. maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
  16. }
  17. }

5.点击构建项目(由多个入口和按钮,自行选择)

此时:会自动下载所有的依赖包,需要很长时间,请耐心等待。。。

中途遇见问题(当时忙着解决问题,忘记截图了,,,):

1.点击构建后立马报错:Exception java.nio.file.InvalidPathException: Illegal char <>>gradle [in thread “Connection worker“] 

问题原因:使用破解版的IDEA,路径中包含中文导致

解决方案:将IDEA卸载后重新安装即可

2.依赖包下载过程中报(此处报错信息贴的不全):org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':build-logic'. 

Checksum/PGP violations detected on resolving configuration :classpath

问题原因:仔细查看报错信息,发现是 org.gradle.kotlin:gradle-kotlin-dsl-plugins 4.2.1 版本找不到,排查发现所有的checksum.xml中对应的版本都是 4.0.7

解决方案:将所有的checksum.xml 中的版本都换成4.2.1 ,注意<sha512>中的值也需要修改,否则仍会报错

  1. <dependency group='org.gradle.kotlin' module='gradle-kotlin-dsl-plugins' version='4.2.1'>
  2. <sha512>A568D32D4EE3EC5FD701267A20CC47AE34069EB589C8FDBFBC558C4FE9AC8A9EAD4901FCBA61E3F4C1BC8F7FFE0ABD9E46061A8B5905539E36CBA471C0468FC0</sha512>
  3. </dependency>

3.不通过IDEA,直接用命令 gradlew.bat build 构建,即使本机gradle配置完成,也会先下载gradle包,不知道为啥,因此不建议使用此方法

构建完成后,可按如下方式启动Jmeter

可以将打包好的jar包替换本地的,就可以使用了(通常使用时,不下载源码,源码下载不经过构建无法启动Jmeter.修改好的jar包可以给其他同事使用)

成果检验

以上,大功告成!!

特别鸣谢

最后,特别致谢过程中,项目成员开发们的支持与帮助!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/250731
推荐阅读
相关标签
  

闽ICP备14008679号