赞
踩
项目背景:终端设备每隔一定时间会发送日志到物联网平台,物联网平台接收日志后,进行处理,分析,得到可用数据。
技术采用:终端设备通过TCP协议发送日志,同一台设备未重启场景下,采用同一个长连接。
测试场景:需要对物联网平台进行性能测试,找出性能瓶颈。采用Jmeter工具,进行性能测试。
在以上背景下,对项目进行性能测试,测试过程中发现并发3000台时,TCP取样器发送失败率50%以上,排查原因:cannot create socket for XXX。于是在网上各种找资料,发现是连接数不够用,按理说服务器设置的TCP连接数有6万多,才并发3000台,而且采用的长连接,不至于不够。
后续,开发人员协助查看发送方的IP地址和端口,发现端口一直在变,也就是说 设置的长连接不起作用。又一通查找原因,原来 jmeter自带机制,TCP请求返回500时,会自动关闭连接。(项目中物联网平台对终端设备就是返回的500,并且没有任何返回值)
于是开启了我的Jmeter二开之路。。。。。
需要安装JDK8以上,此处不做详细描述,大家可自己上网搜索
作者采用IntelliJ IDEA工具,具体安装使用教程,可自行搜索
下载地址:Index of /dist/jmeter/source
下载完成后,解压到对应目录即可
下载地址:https://mirrors.cloud.tencent.com/gradle/
将压缩包解压后,需要配置环境变量,以及仓库目录。
用户变量中新建:GRADLE_USER_HOME
系统变量中新建:GRADLE_HOME
path路径中新建:%GRADLE_HOME%\bin
输入gradle -v 查看是否安装成功
以上环境都OK后,下面开始我们的二开之旅。
1.IDEA中打开jmeter源码项目,如下截图
2.找到对应的文件,修改如下几个地方
3.IDEA配置构建工具。使用本地gradle
4.找到文件目录下的gradle.properties文件,添加如下代码(依赖包下载国内镜像)
- buildscript {
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:2.2.3'
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
- }
- allprojects {
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
- }
- }

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>中的值也需要修改,否则仍会报错
- <dependency group='org.gradle.kotlin' module='gradle-kotlin-dsl-plugins' version='4.2.1'>
- <sha512>A568D32D4EE3EC5FD701267A20CC47AE34069EB589C8FDBFBC558C4FE9AC8A9EAD4901FCBA61E3F4C1BC8F7FFE0ABD9E46061A8B5905539E36CBA471C0468FC0</sha512>
- </dependency>
3.不通过IDEA,直接用命令 gradlew.bat build 构建,即使本机gradle配置完成,也会先下载gradle包,不知道为啥,因此不建议使用此方法
构建完成后,可按如下方式启动Jmeter
可以将打包好的jar包替换本地的,就可以使用了(通常使用时,不下载源码,源码下载不经过构建无法启动Jmeter.修改好的jar包可以给其他同事使用)
以上,大功告成!!
最后,特别致谢过程中,项目成员开发们的支持与帮助!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。