gpt4 book ai didi

java - 用于向大量客户端实时分发小消息的 Netty 选项?

转载 作者:行者123 更新时间:2023-12-01 05:06:39 24 4
gpt4 key购买 nike

我正在设计一个(近)实时的 Netty 服务器,用于将大量非常小的消息分发到互联网上的大量客户端。在内部,尽可能快地进行测试,我发现我可以毫不费力地处理 10k 个客户端,但现在我们正在尝试穿越互联网,其中延迟、带宽等变化很大,我们遇到了可怕的内存不足问题即使有 2 GB RAM,也会出现问题。

我尝试了各种解决方法(将套接字堆栈大小设置得更小,设置高低水位线,取消太旧的东西),它们有一点帮助,但它们似乎只有一点点帮助。有哪些好的方法可以优化 Netty 以发送大量小消息而不会造成明显延迟?另外,大部分消息仅包含一种消息,我并不特别关心它是否未到达。我会使用 UDP,但因为我们无法控制客户端,所以这实际上是不可能的。是否可以单独为此类消息设置单独的超时而不影响其他消息?

您能提供的任何见解将不胜感激。

最佳答案

通常,如果看到内存不足,您可以使用线程转储工具来转储线程。或者使用 jvirtualvm 和 jconsole 之类的东西来找出哪个类没有被 GC 并继续消耗你的内存。2Gigs 对于现在的 64 位机器来说并不大。尝试将这个数字调大到大约 3 或 4 G,看看是否不会遇到 OOM。如果您发现可以在 LAN 中轻松处理 10k 连接,请尝试在 netty 处理程序中添加一点延迟。检查发生了什么。

关于java - 用于向大量客户端实时分发小消息的 Netty 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12565362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com