Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用netty4实现高吞吐量服务器_Java_Netty_Throughput - Fatal编程技术网

Java 如何使用netty4实现高吞吐量服务器

Java 如何使用netty4实现高吞吐量服务器,java,netty,throughput,Java,Netty,Throughput,如何使用netty4实现高吞吐量服务器? 在我的基准测试中,包的大小约为16字节~0.5K,tps约为8.8w/s,无法上升,netty4中是否有一些参数调整建议以使小包受益? 代码是,它是一个具有自定义存储结构的MQ,也使用代理和客户端之间的专用协议。 非常感谢。正如诺曼·莫雷尔在评论中所说,如果没有一些代码和分析,很难提供帮助。但我会试试看 由于每个数据包都很小,单独发送它们会有很多开销,这是因为Netty是如何设计的。一旦你发送了一条消息,它会经过一整条链(管道),虽然很有帮助,但它有助于

如何使用netty4实现高吞吐量服务器?
在我的基准测试中,包的大小约为16字节~0.5K,tps约为8.8w/s,无法上升,netty4中是否有一些参数调整建议以使小包受益?
代码是,它是一个具有自定义存储结构的MQ,也使用代理和客户端之间的专用协议。

非常感谢。

正如诺曼·莫雷尔在评论中所说,如果没有一些代码和分析,很难提供帮助。但我会试试看

由于每个数据包都很小,单独发送它们会有很多开销,这是因为Netty是如何设计的。一旦你发送了一条消息,它会经过一整条链(管道),虽然很有帮助,但它有助于保持事情的简单化和模块化,但是如果你发送了几个小消息,它会很快累积起来


作为一种解决方案,您可以尝试将它们放置在每10毫秒刷新一次的队列中,或者在填充100个数据包之后刷新。请注意,这将导致延迟增加,特别是当只发送几个数据包时。

服务器运行时环境:千兆局域网(UTI输入23M,输出18M),16核cpu(UTI 60%),jvm堆集6G不知道代码很难说,但可能您想使用ChannelOption.TCP\u NO\u DELAY=false,看看是否有帮助。我尝试了ChannelOption.TCP\u NO\u DELAY=false,但效果不好。此外,我还将SO_SNDBUF和SO_RCVBUF增加到16k,但仍然没有什么改进。我认为,如果没有看到您的代码和一些分析数据,就不可能对源代码有所帮助。这是一个具有自定义存储结构的MQ,也使用代理和客户端之间的专用协议。是的,这可能会提高吞吐量,但数据可靠性将是另一个问题,也是关于延迟的问题。遗憾的是,您不能同时拥有这两个问题。另外,您是否使用池缓冲区?直接还是堆?