【问题标题】:Netty's ability to handle large payloadsNetty 处理大型负载的能力
【发布时间】:2012-10-12 13:21:18
【问题描述】:

我在我的开源项目中使用 Apache MINA。但是,我遇到了性能障碍,无法处理从移动设备上传到服务器的大型有效负载。我收到内存不足错误。我从未使用过 Netty,并希望将 MINA 与 Netty 交换。

我对 Netty 团队的问题是 Netty 在大量传入有效负载的负载下如何执行。在我的性能测试中,我使用 1000 个并发设备生成负载,每个设备发送 1MByte 大小的有效负载。它倾向于在 5 分钟内生成 1GIG 的上传数据。这种负载往往会破坏 MINA。

Netty 能否支持这种负载等等。非常感谢您对此的意见。

顺便说一句:我确实使用 JProfiler 对应用程序进行了概要分析。它确实指出 MINA 堆栈是罪魁祸首。我什至完全断开了我的服务器端堆栈,并将其留在消耗数据并返回数据的普通 MINA 服务器上。在这种模式下,即使我的后端没有进行真正的处理,它也会在大约 15 到 20 分钟内开始耗尽内存

【问题讨论】:

  • 我确实使用 JProfiler 分析了应用程序。它确实指出 MINA 堆栈是罪魁祸首。我什至完全断开了我的服务器端堆栈,并将其留在消耗数据并返回数据的普通 MINA 服务器上。在这种模式下,即使我的后端没有进行真正的处理,它也会在大约 15 到 20 分钟内开始耗尽内存
  • 太棒了!如果您认为您的评论应该成为问题的一部分,请随时编辑您的问题。
  • 我想说,试试看吧。它很有可能变得更好。但请记住,无论您使用什么框架,您的工作负载都可能需要更多内存和 GC 调整。

标签: java netty


【解决方案1】:

这似乎是对库的不正确使用,而不是库本身的实际问题。如果不是用户错误,IMO Netty 可能会做同样的事情。我之前在高带宽应用程序中使用过 MINA,但没有这个结果。可能是您的网络已经饱和,缓冲区只是消耗了所有等待上传的内存。只是我的 2 美分。

【讨论】:

    【解决方案2】:

    我过去曾在一个项目中使用过 Netty,我们试图构建一个能够通过 HTTP 流式传输大量数据的平台。在您概述的场景下,我们没有机会对 Netty 进行负载测试。当我们考虑选择哪个框架时,Netty 是因为它的性能和 API 优于 MINA 和其他类似框架。有很多网站进行了 Netty 与 MINA 的比较。 IMO,您应该能够通过使用 Direct ByteBuffers 的组合并在读取数据时将数据写入磁盘/存储来满足您的用例。

    【讨论】:

      猜你喜欢
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      相关资源
      最近更新 更多