【问题标题】:How should I configure Netty to handle high request volumes?我应该如何配置 Netty 来处理高请求量?
【发布时间】:2012-12-29 01:01:58
【问题描述】:

在我们的应用程序中,我们需要构建一个 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,但它几乎没有使用它。所以,基本上,盒子完全负载不足。

【问题讨论】:

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

标签: java netty


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多