当前位置: 首页 > news >正文

想学网站建设与设计的书籍郑州做网站

想学网站建设与设计的书籍,郑州做网站,网站建设教学改进,质量检测中心培训网站前言 如果想要压测一些三方组件,比如MQ,redis什么的,jmeter本身是不支持的。 本文以开发一个压测netty的echo示例,说明如何自定义jmeter的sampler。 开发 本文以idea示例, 新建工程 打开idea新建一个空的maven工程…

前言

如果想要压测一些三方组件,比如MQ,redis什么的,jmeter本身是不支持的。
本文以开发一个压测netty的echo示例,说明如何自定义jmeter的sampler。

开发

本文以idea示例,

新建工程

打开idea新建一个空的maven工程:
在这里插入图片描述

pom依赖

jmeter的核心依赖:

        <dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_core</artifactId><version>5.5</version></dependency><dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_java</artifactId><version>5.5</version></dependency>

三方依赖,比如我要压测netty,开发一个netty客户端,必然要引入netty相关的依赖:

        <dependency><groupId>io.netty</groupId><artifactId>netty-handler</artifactId><version>${netty.version}</version></dependency><dependency><groupId>io.netty</groupId><artifactId>netty-transport-native-epoll</artifactId><version>${netty.version}</version></dependency>

Echo客户端

这部分代码可以从netty的示例里[io.netty.example.echo.EchoClient]拿过来改改就行:

public class EchoClient {static final int SIZE = Integer.parseInt(System.getProperty("size", "256"));private Channel channel;public EchoClient(String host, int port) {EventLoopGroup group = new NioEventLoopGroup();Bootstrap b = new Bootstrap();b.group(group).channel(NioSocketChannel.class).option(ChannelOption.TCP_NODELAY, true).option(ChannelOption.SO_SNDBUF, 1024 * 1024).handler(new ChannelInitializer<SocketChannel>() {@Overridepublic void initChannel(SocketChannel ch) throws Exception {ChannelPipeline p = ch.pipeline();p.addLast("flushHandler", new FlushConsolidationHandler(1024, true));p.addLast(new EchoClientHandler());}});// Start the client.try {channel = b.connect(host, port).sync().channel();} catch (InterruptedException e) {throw new RuntimeException(e);}}public void write(String message) {channel.writeAndFlush(message);}
}

开发Jmeter的JavaSampler

@Slf4j
public class EchoTest extends AbstractJavaSamplerClient {private String label = "echo";private String host;private int port;private String content;private AtomicInteger index = new AtomicInteger(0);public static EchoClient client;public EchoTest() {log.info(this.whoAmI() + "\tConstruct");}@Overridepublic void setupTest(JavaSamplerContext context) {// 读取设置的请求参数this.setupValues(context);// 注意如果client不是静态的类变量,在jmeter指定并发数的时候,每个线程会创建一个client对象,所以如果需要多少个客户端,根据自己场景调整if (client == null) {synchronized (EchoTest.class) {if (client == null) {client = new EchoClient(this.host, this.port);}}}}@Overridepublic SampleResult runTest(JavaSamplerContext javaSamplerContext) {SampleResult results = new SampleResult();results.setSentBytes(content.length());results.setDataType("text");// 用来计算一个请求的耗时的results.sampleStart();try {// 除了这行业务代码,其它可以算是模板范式client.write(content);results.setResponseOK();results.setResponseCodeOK();results.setSuccessful(true);} finally {results.sampleEnd();}results.setSampleLabel(this.label);return results;}private void setupValues(JavaSamplerContext context) {this.host = context.getParameter("Host");this.port = context.getIntParameter("Port");this.content = context.getParameter("Content");}/*** 这个方法就是在Jmeter上设置的请求参数*/@Overridepublic Arguments getDefaultParameters() {Arguments params = new Arguments();params.addArgument("Host", "127.0.0.1");params.addArgument("Port", "8007");params.addArgument("Content", "输入内容");return params;}private String whoAmI() {return Thread.currentThread() + "@" + Integer.toHexString(this.hashCode());}
}

关键地方已经加上注释了,其它场景可以照这个模板走就行。

打包

因为有三方依赖,打包的时候需要把这些依赖也打包进行来,因此使用maven-assembly-plugin插件:

    <build><finalName>${artifactId}</finalName><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build>

打包命令:

mvn clean package

打包完成,在target目录下生成如下jar包:
在这里插入图片描述

部署

将打包出来的带有*-with-dependencies.jar的jmeter-echo-jar-with-dependencies.jar放到jmeter的lib/ext目录下:
在这里插入图片描述

启动jmeter

如果打的包没问题的话,启动Jmeter,增加Sampler的时候选择Java Request:
在这里插入图片描述
然后选择我们定义的EchoTest:
在这里插入图片描述
运行下看下效果:
在这里插入图片描述
在这里插入图片描述

http://www.yidumall.com/news/103110.html

相关文章:

  • 2018年网站风格网站搜索系统
  • 中纪委网站两学一做 重拾自信百度指数下载手机版
  • 网站注册表单怎么做百度关键词搜索量查询
  • 官方网站下载官方版本百度快照和广告的区别
  • 做app简单还是网站软文营销的定义
  • 德宏网站建设百度点击工具
  • 东风地区网站建设公司口碑营销策划方案
  • 做团购网站需要什么百度一下官方下载安装
  • 做与食品安全有关的网站厦门seo哪家强
  • 一键建站哪家信誉好最新中国新闻
  • 皮革城网站建设方案专业海外网站推广
  • 小城市网站建设业务西安seo排名优化推广价格
  • 国外设计参考网站无锡优化网站排名
  • 网站开发职业生涯规划范文seo技术
  • 聊城手机网站建设价格网站关键词排名怎么优化
  • 网站外包建设沈阳网站建设制作公司
  • 科汛 kesioncms v8.05 企业网站建设入门视频教程北京互联网公司有哪些
  • 中山网站建设方案网站推广的10种方法
  • 如何做监控网站文案代写
  • 小型玩具企业网站建设初期阶段任务怎么注册自己的网站域名
  • 有哪些做封面的网站23岁老牌网站
  • 申请好域名后 怎么做网站玉林网站seo
  • 帮忙制作网页的公司seo优化方案项目策划书
  • 做隐私的网站泰州seo公司
  • asp化妆品网站源码西安百度seo推广电话
  • 深圳网站建设制作订做网络销售真恶心
  • wordpress 公司网站百度地址如何设置门店地址
  • 个人网站可以做电商么网站优化策略
  • 广州网站托管2023第二波疫情已经到来了吗
  • 公司做网站要多久淘宝怎么推广自己的产品