netty单机压测数据

  • Post author:
  • Post category:其他


机器配置:

4核8处理器

netty配置:

        NioEventLoopGroup bossGroup = new NioEventLoopGroup(2);
        NioEventLoopGroup workerGroup = new NioEventLoopGroup(coreProcessorsThread);//8
        this.listenPort = listenPort;
        serverHandler.init(basePackage);
        bootstrap.group(bossGroup, workerGroup)
                .channel(NioServerSocketChannel.class)
                .option(ChannelOption.SO_BACKLOG, 128) // 用于临时存放三次握手的请求的队列的最大长度
                .option(ChannelOption.SO_REUSEADDR, true)
                .childOption(ChannelOption.SO_KEEPALIVE, true)
                .handler(new LoggingHandler(LogLevel.INFO))
                .childHandler(new ChannelInitializer<SocketChannel>() {
                    @Override
                    protected void initChannel(SocketChannel ch) throws Exception {
                        ch.pipeline().addLast(new StringEncoder(Charset.forName("UTF-8")));
                        ch.pipeline().addLast(new LineBasedFrameDecoder(1024 * 20));
                        ch.pipeline().addLast(new StringDecoder(Charset.forName("UTF-8")));
                        ch.pipeline().addLast(serverHandler);
                    }
                });

并发统计:(20线程 循环次数10000)

在这里插入图片描述

在这里插入图片描述

并发统计:(500线程 循环次数200)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

100线程1000次循环 数据库查询3-5ms

线程组(boss线程为1) 吞吐量
4 900
8 1375
10 1560
16 2000
20 2000
30 2000
30 1880
50 1700
100 1300

由于IO密集型任务线程并不是一直在执行任务,则应配置尽可能多的线程,如CPU核数*2

可以看出16个左右线程最优

参考公式:CPU核数 /(1 – 阻系数)

比如8核CPU:8/(1 – 0.9)=80个线程数

阻塞系数在0.8~0.9之间



版权声明:本文为qq_38898864原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。