在我们的应用程序中,我们需要构建一个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,但它几乎没有使用任何一个。所以,基本上,这个盒子完全没有用了。
答案 0 :(得分:0)
您是否通过在ServerBootstrap中设置“child.nodelay”来禁用Nagle?
(见http://static.netty.io/3.5/api/org/jboss/netty/bootstrap/ServerBootstrap.html)