Java 我应该如何配置Netty以处理高请求量?

Java 我应该如何配置Netty以处理高请求量?,java,netty,Java,Netty,在我们的应用程序中,我们需要构建一个HTTP服务器,在该服务器启动时,各种远程服务器向其打开大约1600个持久HTTP连接,数千个HTTP POST请求流在每个连接上快速连续发送约30秒—我们只需几毫秒即可响应每个请求。30秒后,连接关闭,另一个连接打开 我们选择Netty是因为大多数人认为它非常适合构建高效的HTTP服务器 在实现HTTP服务器时,我们以Netty HTTP服务器为例 不幸的是,我们遇到的问题可能是Netty过载,因此我们正在重新考虑它是否正确配置,特别是在处理线程的方式上。我

在我们的应用程序中,我们需要构建一个HTTP服务器,在该服务器启动时,各种远程服务器向其打开大约1600个持久HTTP连接,数千个HTTP POST请求流在每个连接上快速连续发送约30秒—我们只需几毫秒即可响应每个请求。30秒后,连接关闭,另一个连接打开

我们选择Netty是因为大多数人认为它非常适合构建高效的HTTP服务器

在实现HTTP服务器时,我们以Netty HTTP服务器为例

不幸的是,我们遇到的问题可能是Netty过载,因此我们正在重新考虑它是否正确配置,特别是在处理线程的方式上。我们按如下方式配置服务器:

ServerBootstrap bootstrap = new ServerBootstrap(
   new NioServerSocketChannelFactory(
            Executors.newCachedThreadPool(),
            Executors.newCachedThreadPool()));
当我们收到请求时,我们会在SimpleChannelUpstreamHandler中调用messageReceived()的同一线程中处理它

这种方法在我们的应用程序中有效吗


编辑:发生故障时,框上的平均负载为0.05,因此非常低。我已经为Java进程分配了4GB,但它几乎没有使用任何4GB。因此,基本上,该框完全没有加载。

您是否通过在服务器引导程序中设置“child.nodelay”来禁用Nagle


(请参阅)

您可以发布一些CPU/ram使用率数据吗?根据您的请求进行响应,该框没有过载。发生了什么错误?另一个服务报告它在100毫秒超时后没有收到我们的HTTP响应,但是我们的日志显示我们有足够的时间来响应。你最后的评论似乎指出了网络方面的问题,不是吗?带宽够大吗?实际上,我正在处理一个类似的应用程序,我遇到了相同类型的问题。