【问题标题】:Preventing out of memory error in Netty 4.0.0.Alpha防止 Netty 4.0.0.Alpha 中的内存不足错误
【发布时间】:2013-02-20 06:17:37
【问题描述】:

我正在开发一个服务器应用程序,使用 Netty 将数据流式传输到客户端。基本上,有一个主服务器向我的应用程序提供数据,应用程序会将数据分发给注册用户。由于我的应用程序需要长期维护,而 Netty 3.5.8 和 Netty 4.0.0 在 API 方面有很大不同,所以我决定使用 Netty 4.0.0

但是,我遇到了一个问题,即当主服务器提供太多数据而无法足够快地分发给客户端时。堆内存使用量增加并导致内存不足,因此我尝试在写入数据之前检查客户端的缓冲区以防止此问题。我在网站(http://static.netty.io/4.0/xref/io/netty/example/discard/package-summary.html)中使用了丢弃示例,但它不起作用,因为有时堆内存已满在调用侦听器之前。我在 Netty 3.5.8 中查看此示例,发现该示例在写入数据之前检查实际缓冲区。与 4.0.0 中的示例不同,所以我们有办法在 netty 4.0.0 中写入之前检查缓冲区吗??

提前致谢。

【问题讨论】:

    标签: netty


    【解决方案1】:

    我有类似的问题。我的处理方式是:

    1. 服务器写入数据时,同步调用写入第64k字节的调用。所以调用会被阻塞,直到数据被另一端消耗掉。
    2. 另一端不消费数据,直到它已经消费的数据被处理并丢弃。

    始终遵循相同的模式。它可能会减慢速度,但会防止内存不足错误。不应该担心速度缓慢,因为如果担心,您的应用程序架构(netty 之外)中已经有一个需要解决的用例。

    【讨论】:

      猜你喜欢
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 2015-09-20
      相关资源
      最近更新 更多