jmeter初学,用http request sampler作为sampler,有限制,自己写的tcp c/s代码需要压测,只能再写一个springboot controller + tomcat,在controller中创建客户端,连接服务器,然而这些还需要tomcat dispacher 分派http请求,jmeter模拟出来的线程的每一次迭代都要对应一个httprequest,经过tomcat处理再次封装成tomcat线程,这个过程会浪费一些性能。
了解到jmeter 还有java request,本质是一个jar包,本质是运行字节码文件,这样jmeter模拟出来的线程的每一次迭代就是执行可执行jar包中的字节码,没有中间商赚差价。
这个jar包需要自己编码然后打包,
1.编码:
引入依赖maven仓库浏览搜索:https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_java/5.1.1
继承AbstractJavaSamplerClient类或实现xxx接口
https://blog.csdn.net/qilinxo/article/details/81209523(这个博客用到了assembly进行打包,生成的jar包是全依赖jar包,耗时长,结果太大,自己的demo打包后125m)
https://www.cnblogs.com/yshyee/p/8073621.html(这个Test类的文件可以参考)https://www.cnblogs.com/mawenqiangios/p/5946549.html
https://blog.csdn.net/max229max/article/details/88061150
2.打包
2.1方法一:可以创建java-se工程(非maven),eclipse ,new java project, build path-> add external手动添加apache-jmeter的jar包,写完后,export as a runnable jar file,
2.2方法二:创建maven工程,打包方式build插件用shade: maven-shade:https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-shade-plugin
2.3注意,不要用assembly插件打包,全依赖包很大,
2.4maven会传递依赖很多不需要的jar包,为了不把这些jar包也打到最后的jar中,需要exclusion: http://www.360doc.com/content/17/1114/14/19075496_703739454.shtml
2.4打包出现编码错误:
在Pom.xml中添加:
<properties>
<!-- 文件拷贝时的编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 编译时的编码 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
具体打好的jar包中有什么信息,可以解压缩查看。。
3.1
【Maven学习】Maven打包生成普通jar包、可运行jar包、包含所有依赖的jar包
https://blog.csdn.net/u013177446/article/details/54134394
3.java命令行工具打包:
javac -encoding utf-8 -cp xxx;xxx;. xxx.java
写一个manifest指定引用的类包路径和,主类入口函数等信息
jar cvf manifest xxx.jar xx.jar xx.class xxx.class
java -jar xxx.jar可以运行
https://introcs.cs.princeton.edu/java/85application/jar/jar.html