zoukankan      html  css  js  c++  java
  • jmeter压力测试netty-rpc-service

    只发送消息,不等待结果,线程太快,有些channel还没有写完数据,就stop了,所以本来设置了1000个samples,结果只有337次发送到服务端

     

     jmeter的threadgroup中的每个thread在启动时,拿到public class TestDemo extends AbstractJavaSamplerClient,执行一次setupTest()方法,然后根据jmeter设置的每个线程迭代次数执行多次runTest()方法,最后结束之前执行teardownTest()方法,

    这里每次启动一个sampler都用到了netty客户端的连接操作,开启了eventloopgroup,eventloop,channel其他地方还用到了schedulorThreadPool,这些资源都需要在线程结束前关闭:

    public void Stop() {
    LOGGER.info("正在关闭RpcClient....");
    getChannel().eventLoop().shutdownGracefully();
    FutureCache.removeAll();
    ExecutorService es = FutureCache.scheduler;
    es.shutdown();
    while(!es.isTerminated()) {

    }
    LOGGER.info("已经关闭FutureCache的scheduler...");
    if(group != null && !group.isShutdown()) {
    group.shutdownGracefully();
    group = null;
    }
    LOGGER.info("RpcClient已关闭....");
    }

    如果不关闭,jmeter下次运行测试,可能资源混乱。

    rpcclient的invokewithfuture使用

    // channel.eventLoop().execute(()->{
    // channel.writeAndFlush(msg);
    // });

    会导致客户端在future.get()时提前拿到结果,然而结果是null,后面报空指针异常。

    为什么?

  • 相关阅读:
    spring(2)
    Android之滑动按钮实现Demo
    spring(1)
    spring(4)
    Android之ImageSwitch控件
    使用非阻塞ServerSocketChannel、SocketChannel代替ServerSocket和Socket
    Android之界面刷新(invalidate和postInvalidate使用)
    Android之改变控件的背景及形态
    Android之获得内存剩余大小与总大小
    OpenCV中矩阵的归一化
  • 原文地址:https://www.cnblogs.com/CreatorKou/p/11560426.html
Copyright © 2011-2022 走看看