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

时间:2012-12-20 19:50:56

标签: java netty

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

我们选择Netty是因为大多数帐户都非常适合构建高效的HTTP服务器。

在实施我们的HTTP服务器时,我们遵循了Netty HTTP服务器的Snoop示例。

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

ServerBootstrap bootstrap = new ServerBootstrap(
   new NioServerSocketChannelFactory(
            Executors.newCachedThreadPool(),
            Executors.newCachedThreadPool()));

当我们收到请求时,我们在SimpleChannelUpstreamHandler中调用messageReceived()的同一个线程中处理它。

这种方法是否适用于我们的应用程序?

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

1 个答案:

答案 0 :(得分:0)

您是否通过在ServerBootstrap中设置“child.nodelay”来禁用Nagle?

(见http://static.netty.io/3.5/api/org/jboss/netty/bootstrap/ServerBootstrap.html