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,后面報空指針異常。

為什么?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM