Netty TCP客户端将同一服务器的多个连接连接到同一通道以提高TPS

时间:2018-08-23 19:44:48

标签: java multithreading tcp netty nio

当我有一个将事件发送到X通道的客户端时,我看到的点值是30k-34k。客户端等待每个消息传递的Ack(我需要保留此配置以保持消息的可靠性)。在服务器端,我有10个作为工作线程,而10个作为老板线程。

现在我有一个要求将此tps增加到100k。下面是Netty客户初始化代码。

public TCPNettyClient(int numberOfThreads, boolean keepAlive, boolean noDelay) {
        group = new NioEventLoopGroup(numberOfThreads);
        bootstrap = new Bootstrap();
        bootstrap.group(group)
                .channel(NioSocketChannel.class)
                .option(ChannelOption.SO_KEEPALIVE, keepAlive)
                .option(ChannelOption.TCP_NODELAY, noDelay)
                .handler(new ChannelInitializer<SocketChannel>() {
                    @Override
                    protected void initChannel(SocketChannel ch) throws Exception {
                        ChannelPipeline pipeline = ch.pipeline();
                        pipeline.addFirst(new MessageEncoder());
                    }
                });
    }

我有一个问题是通过增加numberOfThreads,这是否意味着客户端尝试并行发送事件?如果可以的话,这可以帮助我增加客户的点差。到目前为止,它不会增加tps。

我能想到的其他解决方案是增加将连接到同一服务器并将事件发送到同一通道的客户端。我确实添加了另一个客户端(我尝试了最多5个客户端),但是我看不到任何tps的增加?我的理解正确吗

0 个答案:

没有答案